コマンドラインから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 メタコマンドは;
改行文字ではなく改行文字で終了します。したがって、改行文字が正しい位置に挿入されるように、別の方法でコマンドを提供する必要があります。
ここにいくつかの例があります。おそらく最初の例を使用します(読みやすいので)。
ここでドキュメントを使用してください。
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'