sqlite3コマンドライン - 1ステップでスキーマを設定してインポートする方法

sqlite3コマンドライン - 1ステップでスキーマを設定してインポートする方法

コマンドラインから1つのステップでこれを行うことができるはずです。

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'
    

おすすめ記事