SQLite : 쿼리 결과를 CSV 파일로 저장하려면 어떻게합니까?


답변:


249

에서 여기 와 d5e5의 코멘트 :

출력을 csv 모드로 전환하고 파일 출력으로 전환해야합니다.

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

4
이 파일은 어디에 저장됩니까?
RayLoveless

34
표준 출력, 즉 화면과 같이 인쇄됩니다. 파일에 출력을 저장하려면 : sqlite> .output test.csv 인쇄 결과를 화면에 복원하려면 : sqlite> .output stdout
d5e5

1
노드 라이브러리 에서이 작업을 수행하는 방법을 찾을 수있는 위치에 대한 포인터?
kuanb

2
특정 경로를 사용하려면 sqlite> .output C : /Users/jdoe/Documents/output.csv를 사용하십시오.
더스틴

안녕하세요! 나는 이걸했다. 내 쿼리가 완벽하게 작동했지만 파일 출력이 비어 있습니다. 누군가 이유를 알고 있습니까?
Valeria Lobos Ossandón

144

csv 파일에 열 이름을 포함 시키려면 다음을 수행하십시오.

sqlite> .headers on
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

변경 사항을 확인하려면이 명령을 실행할 수 있습니다.

sqlite> .show

산출:

echo: off   
explain: off   
headers: on   
mode: csv   
nullvalue: ""  
output: stdout  
separator: "|"   
stats: off   
width: 22 18 

3
열 이름을 얻는 방법을 보여 주셔서 감사합니다! 이 답변은 더 높아야합니다.
Stan James

sqlite3은 이전 내용을 지우지 않고 파일 끝에 출력을 추가합니다.
kupgov

1
그러나 각 .output filename.csv실행 파일을 만들거나 지 웁니다.
kupgov

25

gdw2와 d5e5의 좋은 답변. 여기에 조금 더 간단하게하기 위해 일련의 명령으로 권장 사항을 정리했습니다.

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

23

위의 답변 외에도 .once유사한 방법으로 사용할 수 있습니다 .output. 이렇게 하면 다음 쿼리 만 지정된 파일로 출력하므로을 따를 필요가 없습니다 .output stdout.

위의 예에서

.mode csv
.headers on
.once test.csv
select * from tbl1;

1

또는 한 줄로 할 수 있습니다 (win10에서 테스트 됨)

sqlite3 -help
sqlite3 -header -csv db.sqlite 'select * from tbl1;' > test.csv

보너스 : cmdlet 및 파이프 (|)와 함께 powershell 사용.

get-content query.sql | sqlite3 -header -csv db.sqlite > test.csv

여기서 query.sql은 SQL 쿼리를 포함하는 파일입니다.

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