
명령줄을 통해 한 단계로 이 작업을 수행할 수 있어야 합니다.
lab-1:/etc/scripts# sqlite3 test.db
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> .mode csv ;
sqlite> .import /tmp/test.csv users
sqlite> select * from users;
John,Doe,au,0,"",1,5555,91647fs59222,audio
sqlite> .quit
나는 다음을 시도했습니다 :
lab-1:/etc/scripts# sqlite3 test.db ".mode csv ; .import /tmp/deleteme.csv users"
그리고
lab-1:/etc/scripts# sqlite3 test.db ".mode csv .import /tmp/deleteme.csv users"
오류는 발생하지 않지만 최종 사용자 테이블에도 데이터가 없습니다.
어떤 조언이라도 대단히 감사하겠습니다.
답변1
SQLite 메타 명령은 ;
개행 문자가 아니라 개행 문자로 종료됩니다. 따라서 개행 문자가 올바른 위치에 삽입되도록 다른 방법으로 명령을 제공해야 합니다.
여기에 몇 가지 예가 있습니다. 아마도 첫 번째 예를 사용할 것입니다(읽을 수 있으므로).
여기에서 문서를 사용하세요.
sqlite3 testdb <<END_COMMANDS .mode csv .import /tmp/deleteme.csv users END_COMMANDS
다음 형식 명령을 사용하십시오
printf
.printf '.mode csv\n.import /tmp/deleteme.csv users\n' | sqlite3 test.db
C 이스케이프와 함께 이 문자열을 사용하십시오(지원하는 쉘에서):
sqlite3 test.db <<<$'.mode csv\n.import /tmp/deleteme.csv users\n'