쉘 스크립트를 사용하여 sqlite에서 csv로 내보내기


89

다음과 같이 sqlite 쿼리를 csv 파일로 내보내는 셸 스크립트를 만들고 있습니다.

 #!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db ".headers on"
./bin/sqlite3 ./sys/xserve_sqlite.db ".mode csv"
./bin/sqlite3 ./sys/xserve_sqlite.db ".output out.csv"
./bin/sqlite3 ./sys/xserve_sqlite.db "select * from eS1100_sensor_results;"
./bin/sqlite3 ./sys/xserve_sqlite.db ".exit"

스크립트를 실행하면 출력이 "out.csv"에 저장되지 않고 화면에 나타납니다. 명령 줄에서 동일한 방법으로 작동하지만 쉘 스크립트가 데이터를 파일로 내 보내지 못하는 이유를 모르겠습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변:


125

sqlite3

sqlite3각 회선에 대해 별도의 통화가 있습니다. 당신이 select달릴 때까지 당신 .out out.csv은 잊혀졌습니다.

시험:

#!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db <<!
.headers on
.mode csv
.output out.csv
select * from eS1100_sensor_results;
!

대신.

sh / bash 메서드

리디렉션을 사용하여 스크립트를 호출 할 수 있습니다.

$ your_script >out.csv

또는 스크립트의 첫 번째 줄로 다음을 삽입 할 수 있습니다.

exec >out.csv

전자의 방법을 사용하면 다른 파일 이름을 지정할 수 있고 후자는 특정 파일 이름으로 출력합니다. 두 경우 모두 라인 .output out.csv을 무시할 수 있습니다.


감사합니다. 이제 작동합니다! (그리고 ">"대신 ">>"이 필요합니다.하지만 저는 Linux에서 newbei입니다. : D)
Rorro 2011

1
여기에있는 답변이 실제로 귀하의 질문에 대한 답변 인 경우 답변 의 총 투표 수 아래에있는 확인 표시를 클릭해야합니다 (연한 회색으로 표시되어야 함). 이 질문은 답변 된 것으로 표시됩니다.
tzot 2011

지연에 대해 죄송합니다. 나는 진짜 초보자입니다 : D
Rorro

<<! ... !정확히 내가 필요한 것입니다. 감사.
Rostyslav Druzhchenko

173

점 명령 대신 sqlite3 명령 옵션을 사용할 수 있습니다.

sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv

이것은 그것을 한 줄로 만듭니다.

또한 SQL 스크립트 파일을 실행할 수 있습니다.

sqlite3 -header -csv my_db.db < my_script.sql > out.csv

사용 sqlite3 -help가능한 옵션 목록을 보려면 사용 하십시오.


3
훨씬, 훨씬 낫습니다 ... 이것이 허용되는 솔루션이어야합니다! KISS :-)
pvandenberk

5
이 솔루션은 sqlite3가 경로 또는 동일한 디렉토리에 있다는 점을 감안하여 Windows에서도 작동합니다.
amenthes

7

최근에 db 파일에서 테이블을 가져와 csv 파일로 변환 할 수있는 쉘 스크립트를 만들었습니다.

https://github.com/darrentu/convert-db-to-csv

내 스크립트에 대한 질문이 있으면 언제든지 물어보십시오. :)


3
이것은 나를 도왔다. 답변에 10 줄의 코드를 복사하여 붙여 넣어야합니다. 그러면 제가 이미 준 찬성표가 더 정당하다고 느낄 것입니다.
mxmlnkn

스크립트에서 테이블 이름 주위에 따옴표가 없습니다 (테이블 이름에 대시가 있으면 오류가 발생 함)
Eric F.

0

질문은 쉘 스크립트에 관한 것이지만 sqlite3 데이터베이스에서 csv 파일로 데이터를 전송하는 데 신경 쓰이는 사람들은 거의 없다고 생각합니다.

SQLite Manager 확장을 사용하여 firefox 브라우저로 수행하는 매우 편리한 방법을 찾았습니다.

파이어 폭스의 sqlite 데이터베이스 파일 (SQlite 관리자-> 데이터베이스 연결)에 연결 한 다음 테이블-> 테이블 내보내기 만하면됩니다. 클릭하고 시도 할 수있는 더 많은 옵션이 제공됩니다 ....

결국 당신은 테이블 u가 내보내기로 선택한 csv 파일을 얻습니다.


0
Using command line for Linux:

user@dell-Admin: sqlite3 #activate your sqlite database first
sqlite> .tables #search for tables if any available if already created one.
sqlite> .schema #if you want to check the schema of the table.

# once you find your table(s), then just do the following:

sqlite> .headers on   #export along with headers (column names)
sqlite> .mode csv     #file type is csv
sqlite> .output example.csv   #you want to provide file name to export
sqlite> SELECT * from events;    #If entire table is needed or select only required
sqlite> .quit    #finally quit the sqlite3

이제 시스템에서 example.csv 파일을 검색하면 얻을 수 있습니다.

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