CSV 파일 쿼리


30

누구나 CSV 파일을 열고 기본적인 SQLesque 쿼리를 수행하는 간단한 도구를 알고 있습니까? 사용하기 쉬운 일종의 그래픽 도구와 같습니다.

CSV를 SQLite 데이터베이스로 가져 오기 위해 작은 스크립트를 작성할 수 있다는 것을 알고 있지만 다른 사람이 내 앞에서 이것을 생각했다고 생각하기 때문에 하나만 있는지 문의하고 싶었습니다. 이 질문을 제기하는 것은 Excel의 제한된 필터링 기능에 좌절하고 있다는 것입니다.

아마도 다른 데이터 시각화 조작 도구는 비슷한 기능을 제공 할 것입니다.

무료 또는 OSS가 선호되지만 제안 사항이 있습니다.

편집하다:

"시트를 ODBC 항목으로 작성"또는 "ODBC 파일을 사용하여 프로그램을 작성"하는 대신 아래에서 수행하는 방법에 대한 명확한 자습서 또는 사용할 앱에 대한 아이디어를 더 선호합니다. 참고 : MS Access를 사용할 수 없습니다.

또 다른 편집 :

SQLite를 사용하는 솔루션을 계속 사용할 수 있습니다. 내 플랫폼은 반 고대 Win2k 노트북이며 P4가 있습니다. 속도가 느리므로 리소스 라이트 솔루션이 이상적이며 승리 할 것입니다.


확실하게 : 당신은 여전히 ​​SQLite를 사용하는 솔루션에 열려 있습니까? (.separator 및 .import 명령을 사용하는 것처럼?) 그리고 어떤 플랫폼을 사용하고 있습니까?
Arjan

호기심에서 MS Access를 사용할 수없는 이유는 무엇입니까?
Ludwig Weinzierl

@ Arjan-여전히 SQLite를 사용하는 솔루션에 열려 있습니다. 내 플랫폼은 반 고풍스러운 Win2k 라피이며 P4가 있습니다. 속도가 느리므로 리소스 라이트 솔루션이 이상적이며 승리 할 것입니다.
J. Polfer

2
@ fretje-SQLite에 대한 경험이 없어야합니다. 소스 코드에서 총 1MB 핸드폰에 사용됩니다. Win32 실행 파일 (엔진 및 모두)은 300KB입니다.
J. Polfer

1
@ sheepsimulator : 가볍다는 것을 알고 있지만 요점은 여전히 ​​설명 ... 텍스트 파일에 대한 ODBC 액세스는 기본적으로 OS에 통합되어 있지만 SQLite에서는 여전히 무언가를 먼저 설치하고 csv 파일을 데이터베이스로 가져와야합니다. 아무것도 설치하는 것이 여전히 아주 작은 것을 설치하는 것보다 적습니까?
fretje

답변:


13

LogParser 를 사용해 보셨습니까 ?

로그 파서는 로그 파일, XML 파일 및 CSV 파일과 같은 텍스트 기반 데이터뿐만 아니라 Windows® 운영 체제의 주요 데이터 소스 (예 : 이벤트 로그, 레지스트리)에 대한 범용 쿼리 액세스를 제공하는 강력하고 다양한 도구입니다. 파일 시스템 및 Active Directory®. 필요한 정보와 처리 방법을 Log Parser에 알려줍니다. 쿼리 결과는 텍스트 기반 출력에서 ​​사용자 정의 형식으로 지정되거나 SQL, SYSLOG 또는 차트와 같은보다 특수한 대상으로 유지 될 수 있습니다.

대부분의 소프트웨어는 제한된 수의 특정 작업을 수행하도록 설계되었습니다. Log Parser는 다릅니다 ... 사용 가능한 방법의 수는 사용자의 요구와 상상력에 의해서만 제한됩니다. 세상은 Log Parser가있는 데이터베이스입니다.

google을 사용하여 찾은 CSV 파일과 함께 SQL과 같은 쿼리 언어를 사용하는 방법에 대한 자습서 (및 다른 것 ) .

쿼리 예 :

logparser -i:CSV "SELECT TOP 10 Time, Count INTO c:\logparser\test\Chart.GIF 
FROM c:\logparser\test\log.csv ORDER by Time DESC" -charttype:bar3d

포럼 지원과 많은 질문은 forums.iis.net/default.aspx?GroupID=51 에서 공식
로그 파서

2
codinghorror.com/blog/archives/000369.html 에서 더 많은 예 ; 너무 나쁜 것은 Windows뿐입니다.
Arjan

34

OpenOffice.org Database 가 원하는 것을 할 수 있다고 생각 합니다. 이렇게 작동합니다.

  1. Office.org 데이터베이스 열기를 시작하면 " 데이터베이스 마법사 "가 표시됩니다.

  2. " 기존 데이터베이스에 연결 : 텍스트 " 선택하십시오 .

    여기에 이미지 설명을 입력하십시오

  3. 텍스트 파일의 경로와 구분 문자 등의 세부 정보를 지정하십시오.

    여기에 이미지 설명을 입력하십시오

  4. 쿼리 생성 및 실행

    여기에 이미지 설명을 입력하십시오

Microsoft Access를 사용해 본 적이 있다면 GUI에 익숙 할 것입니다.


GUI없이 할 수 있다면 항상 기존의 UNIX 명령이 있습니다. CSV 파일에 대한 간단한 쿼리를 수행하는 데 많이 사용합니다. 작동 방식은 다음과 같습니다.

clause      operation   command
-------------------------------
from             join     `join`
where     restriction     `grep`
order by           --     `sort`
group by  restriction      `awk`
having    restriction     `grep`
select     projection      `cut`
distinct  restriction     `uniq`
limit     restriction     `head`
offset    restriction     `tail`

와우, 좋은 대답입니다! +1
theycallmemorty

이것은 트릭처럼 보입니다. 나는이 노후 한 기저귀에 기초를 둘 수 있는지 볼 것이다.
J. Polfer

+1. 시원한! OO를 탐색하지 않았다. 항상 MS O가 우위를 차지했다고 생각했습니다!
Swanand

고약한! 대용량 파일의 성능은 어떻습니까? 나는 생물 정보학을 가지고 있으며 탭으로 구분 된 거대한 쓰레기를 가지고 있습니다
user2751

@ 1alstew1 : 큰 파일의 경우 두 방법에서 멀리 떨어져 실제 데이터베이스를 사용합니다. 또한 일괄 가져 오기 (LOAD)를 사용하여 데이터를 데이터베이스로 가져 오십시오. INSERT보다 훨씬 빠릅니다.
Ludwig Weinzierl

13

ODBC를 사용하여 텍스트 파일을 쿼리 할 수 ​​있습니다.

ODBC 데이터 공급자를 사용하여 텍스트 파일에 액세스

당신이 작동하지 MS 액세스를 필요로하지 않는 즉, 위의 링크에있는 튜토리얼은 텍스트 파일을 만들 MS 액세스를 사용하지만, 이미 텍스트 파일을 가지고, 중간 아래로 스크롤하고, 당신이 볼 수있는 튜토리얼을 시작합니다 제목 텍스트 파일 액세스 .

업데이트 : 단계별 자습서 로이 단계를 만들 수 있도록 .csv 파일에 DSN을 직접 만들었습니다.

  • .csv 파일이 다른 디렉토리없이 자체 디렉토리에 있는지 확인하십시오.
  • "ODBC 데이터 소스 관리자"(시작-제어판-관리 도구-데이터 소스 (ODBC))를여십시오.
  • File DSN 탭으로 이동하여 "Add ..."를 클릭하십시오.
  • 목록에서 "Microsoft 텍스트 드라이버 (* .txt, * .csv)를 선택하고"다음> "을 클릭하십시오.
  • 파일 데이터 소스의 이름을 지정하고 (예 : "test") "Next>"를 클릭하십시오.
  • "마침"을 클릭하십시오 (이 후 "데이터 소스 이름"및 "설명"필드가 실제로 회색으로 표시되는 대화 상자가 나타납니다. 이것은 정상입니다. 걱정하지 마십시오.)
  • "현재 디렉토리 사용"체크 상자를 선택 해제하십시오. "디렉토리 선택"버튼이 활성화됩니다.
  • "디렉토리 선택"버튼을 클릭하고 첫 번째 단계에서 .csv 파일을 저장 한 폴더로 이동하십시오.
  • "옵션 >>"버튼을 클릭하십시오.
  • "포맷 정의 ..."버튼을 클릭하십시오.
  • 왼쪽의 "테이블"목록에서 .csv 파일을 선택하고 "Guess"버튼을 클릭하십시오. (CSV 파일을 분석하고 .csv 파일의 각 열에 적절한 필드를 만듭니다.)
  • 오른쪽 목록에서 생성 된 열 (F1, F2, ...)을 살펴보고 의미있는 이름을 지정하고 적절한 데이터 유형을 설정하십시오 (때로는 추측이 항상 올바른 것은 아닙니다).
  • 모든 것이 올바르게 설정되면 "확인"을 클릭하십시오 (2 회).

이 시점에서 ODBC를 통해 .csv 파일에 액세스 할 수있는 파일 DSN이 있어야합니다. .csv 파일이있는 폴더를 검사하면 방금 만든 구성이 포함 된 schema.ini 파일이 표시됩니다. 여러 개의 .csv 파일이있는 경우 각 파일은 테이블에 해당하며 각 테이블은 다른 열이 정의 된 schema.ini 파일에 [ filename .csv] 블록을 갖습니다. 해당 스키마를 생성 / 변경할 수도 있습니다. 위에서 설명한 GUI를 사용하는 대신 텍스트 편집기에서 .ini 파일을 직접 사용하십시오.

귀하의 추가 질문에 관해서는 "쿼리 도구를 사용하여이 ODBC 공급자에 연결하는 방법":
오래 전에 출판 할 수없는 도구를 가지고 있습니다. 그러나 빠른 Google 검색에서 원하는 작업을 수행하는 프리웨어 도구 인 odbc-view 가 나타났습니다 .
도구를 다운로드하여 설치했습니다.
도구를 시작한 후 :

  • "DataSource ..."를 클릭하십시오.
  • 이전에 생성 한 파일 데이터 소스를 선택하십시오 (예 : "test").
  • 쿼리 창에 "select * from [ filename .csv]"를 입력하십시오.
  • "실행"을 클릭하십시오.

아래쪽 창에 .csv 파일의 내용이 표시됩니다.
도움이 되었기를 바랍니다 ... 어떻게하는지 또는 추가 지원이 필요한 경우 알려주십시오.


@ fretje-이것이 작동하기 위해 MS Access가 필요하지 않다는 것을 알고 있습니다. 이 문제에 대해 두 가지 문제가 발생했습니다. 1. GUI 또는 CLI 유틸리티를 사용하여 CSV-DB를 쿼리 할 때 사용할 수 있습니다. 위에서 언급 한 자습서에는 그 중 어느 것도 나와 있지 않습니다. .NET 앱을 작성하여이 ODBC 데이터베이스에 액세스한다고 가정합니다. 2.이 솔루션을 사용하려는 PC에서는 ODBC 설정이이 솔루션을 따르는 데 충분하지 않다고 생각합니다. ODBC 데이터 공급자 생성시 DSN의 이름을 지정할 수 없었으며 상자가 회색으로 표시되었습니다. 시스템 설정 문제 일 수 있습니다.
J. Polfer

@ fretje-쿼리 도구를 사용하여이 ODBC 공급자에 연결하는 방법을 설명 할 수 있다면 좋을 것입니다. 어떻게해야할지 모르겠습니다. 포괄 답변을 찾고 있었어요.
J. Polfer

8

R 을 사용하여 csv 파일에 빠르게 액세스 하는 것을 좋아 합니다. 언어는 직접 SQL이 아니지만 R의 간단한 명령으로 이러한 모든 작업을 수행 할 수 있습니다. R은 멋진 그래프와 다른 많은 기능을 만들 수있는 기능도 제공합니다.


5

항상 파일을 Excel로 읽고 ODBC를 통해 Excel을 데이터 소스로 사용하고 이에 대한 쿼리를 실행할 수 있습니다.


제가 할수 있어요? 이것은 검은 색 magick처럼 들립니다. 튜토리얼 링크를 찾을 수 있습니까?
J. Polfer

2
@ sheepsimulator : Excel은 csv 파일을 엽니 다 ... Excel 파일이 있으면 텍스트 파일을 쿼리 할 수있는 것처럼 ODBC로 쿼리 할 수 ​​있습니다 (아래 답변 참조).
fretje

5

이를 달성하는 가장 간단한 방법은 SQLite의 기본 제공 CSV 가져 오기 기능을 사용하는 것입니다.

  1. sqlite3 mydatabase.sqlite
  2. sqlite> .mode csv
  3. sqlite> .import mydata.csv <tablename>

이제 원하는 데이터베이스를 쿼리 할 수 ​​있습니다. 또한 위의 성능이 좋았으며 10-15 초 동안 3 백만 행을 가져 왔습니다.


3

이것을 수행하는 그래픽이 아닌 작은 앱 csvsql을 찾았습니다 .

설명서는 여기에 있습니다 .


입니다 정확히 그것이 GUI가 있다면 그것은 좋은 것입니다하지만, 내가 찾고 있어요 응용 프로그램의 유형입니다. 슬프게도, 나는 지금 Win2k 상자를 위해 그것을 컴파일하는 좋은 방법이 없습니다. 당신에게 돌아올 것입니다. 또한 저자는 automake 또는 그와 같은 멋진 것을 사용하지 않았으므로 컴파일하려면 약간의 지각이 필요합니다.
J. Polfer

찾기가 매우 어려웠으며, 당신이 묘사 한 것에 가깝게 찾을 수있는 유일한 것이 었습니다. 아마도 누군가가 SQL Lite를 사용하여 텍스트 파일을 가져오고 SQL 쿼리를 실행할 수있는 응용 프로그램을 작성하는 아이디어가 있습니까?
Stefan Thyberg

1
sqlite3(SQLite 데이터베이스를 읽는 명령 줄 응용 프로그램)에는 파일 가져 오기 지원 기능이 내장되어 있습니다. sqlite.org/sqlite.html
Arjan

1
예, 답변에서 여러 번 언급 된 것을 보았지만 쿼리 창이있는 본격적인 메모장과 같은 응용 프로그램을 더 많이 생각하고있었습니다.
Stefan Thyberg

3

무료 도구 q-Text as a Database를 살펴보면 조인, 그룹화 및 기타 SQL 구문을 포함하여 csv 파일에서 직접 SQL을 실행할 수 있습니다. 열 이름 및 열 유형의 자동 감지도 포함합니다.

Linux 작동 방식과 일치하는 명령 행 도구입니다 (예 : 필요한 경우 stdin에서 파이핑, 동작 사용자 정의를위한 특수 플래그 등).

뒤에서 sqlite를 사용하므로 매우 가볍고 사용하기 쉽습니다.

전체 공개-그것은 나만의 오픈 소스 도구입니다. 유용하다고 생각 하시길 바랍니다

하렐 벤 아티아


이 도구는 절대적으로 훌륭합니다!
Dawid Ferenczy Rogožan

2

내가 생각하기에 장래에 이것이 더 쉬워 질 수 있다고 생각한 도구는 Resolver One 입니다.

쉽게 수정할 수있는 Python 코드를 생성하는 스프레드 시트입니다. 개발자이고 때때로 스프레드 시트의 문제를 해결하기 위해 "스텝 다운"해야하는 사람들에게는 익숙한 언어로 스프레드 시트와 같은 문제를 해결하는 직관적 인 방법 인 것 같습니다.

그리고 그것은 파이썬을 사용할 변명을 제공합니다. 파이썬은 나를 행복하게 만듭니다.


2

H2 JDBC 드라이버는 매우 유용한 csvread 기능을 제공하여 다음과 같은 작업을 수행 할 수 있습니다.

select * from csvread(test1.csv) test1 
inner join csvread(test2.csv2) test2
on test1.id = test2.foreignkey

이 드라이버를 사용하기 위해 코드를 작성하지 않고도이 드라이버를 사용하는 다양한 방법이 있습니다.

개인적으로 Squirrel SQL Client 를 선호합니다 . 쿼리를 실행하기위한 GUI를 제공합니다.이를 사용하려면 이미 나열된 H2 In-MemoryDriver 클래스 경로를 다운로드 한 H2 드라이버로 지정하면됩니다. 드라이버를 사용하여 적절한 별칭을 설정하면 원하는 임의의 SQL을 실행할 수 있습니다. 결과는 멋진 표와 가져 오기, 내보내기 등의 다른 모든 기능에 표시됩니다.

또는 Groovy를 사용하여 필요에 따라 드라이버를로드하고 사용하는 빠른 스크립트를 작성할 수 있습니다. 방법을 알아 보려면 이 블로그 게시물 예를 참조하십시오 .

누군가 위의 groovy 스크립트를 확장하여 쿼리를 실행하는 멋진 명령 줄 도구로 만들었습니다. gcsvsql을 참조하십시오. 이를 통해 다음과 같은 명령을 실행할 수 있습니다.

gcsvsql "select * from people.csv where age > 40"


2

gcsvsql이라는 다중 파일 조인을 포함하여 csv 파일에서 임의의 SQL을 실행하는 명령 줄 프로그램을 작성했습니다. 여기에서 읽을 수 있습니다.

http://bayesianconspiracy.blogspot.com/2010/03/gcsvsql.html

여기에 Google 코드 프로젝트가 있습니다 : http://code.google.com/p/gcsvsql/

Java / Groovy로 작성되었으며 Java가 사용 가능한 모든 곳에서 실행됩니다.

편집 : 활성 프로젝트가 github으로 이동했습니다. https://github.com/jdurbin/durbinlib



0

무료는 아니지만 내가 찾은 최고의 프로그램은 File Query 입니다. 명령 행 기반이거나 파일에 액세스하기 전에 파일을 가져 오거나 설정해야하는 다른 솔루션과 달리 파일 쿼리를 사용하면 파일을 열 수 있습니다 (일반 텍스트 편집기처럼 GB를 입력하더라도 자동으로 레이아웃을 구문 분석합니다) 간단한 대화에서 거의 모든 쿼리를 수행 할 수 있습니다.

약간 비싸지 만 한 번만 수행하면 30 일 평가판을 무료로 사용할 수 있습니다. 또한 훌륭한 가이드와 동영상 을 제공하여 시작할 수 있습니다.


0

WHS를 사용할 수 있습니다. 예를 들어 'C : \ Users \ user837 \ Desktop \ t4'디렉토리에 4 개의 파일이 있습니다. 1.txt

id;sex_ref;sale
1;1;10
2;2;30
3;1;20

2.txt

sex_id;name
1;male
2;female

schema.ini

[1.txt]
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=50
DecimalSymbol=,
[2.txt]
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=50
DecimalSymbol=,

Hello.js

WScript.Echo("Hello World!");
var cn = new ActiveXObject("ADODB.Connection");
cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\\Users\\user837\\Desktop\\t4\";Extended Properties=\"text;HDR=NO;FMT=Delimited\"");

var rs = cn.Execute("select * from 1.txt as t1 left join 2.txt as t2 on t1.sex_ref = t2.sex_id");

while (!rs.EOF) 
{
    WScript.Echo(           rs.Fields("id").Value
                  + "###" + rs.Fields("sex_ref").Value
                  + "###" + rs.Fields("name").Value
                );
    rs.moveNext();
}

이제 Hello.js를 두 번 클릭하면 SQL reqult가 한 줄씩 표시됩니다. 모든 쿼리 결과를 보려면 WHS 설명서를 참조하십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.