sqlite3 명령줄 - 한 단계로 스키마를 설정하고 가져오는 방법

sqlite3 명령줄 - 한 단계로 스키마를 설정하고 가져오는 방법

명령줄을 통해 한 단계로 이 작업을 수행할 수 있어야 합니다.

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 메타 명령은 ;개행 문자가 아니라 개행 문자로 종료됩니다. 따라서 개행 문자가 올바른 위치에 삽입되도록 다른 방법으로 명령을 제공해야 합니다.

여기에 몇 가지 예가 있습니다. 아마도 첫 번째 예를 사용할 것입니다(읽을 수 있으므로).

  1. 여기에서 문서를 사용하세요.

    sqlite3 testdb <<END_COMMANDS
    .mode csv
    .import /tmp/deleteme.csv users
    END_COMMANDS
    
  2. 다음 형식 명령을 사용하십시오 printf.

    printf '.mode csv\n.import /tmp/deleteme.csv users\n' | sqlite3 test.db
    
  3. C 이스케이프와 함께 이 문자열을 사용하십시오(지원하는 쉘에서):

    sqlite3 test.db <<<$'.mode csv\n.import /tmp/deleteme.csv users\n'
    

관련 정보