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

다음과 같이 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”에 저장되지 않고 화면에 나타납니다. 명령 줄에서 동일한 방법으로 작동하지만 쉘 스크립트가 데이터를 파일로 내 보내지 못하는 이유를 모르겠습니다.

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



답변

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을 무시할 수 있습니다.


답변

점 명령 대신 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가능한 옵션 목록을 보려면 사용 하십시오.


답변

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

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

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


답변

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

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

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

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


답변

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 파일을 검색하면 얻을 수 있습니다.


답변