• 締切済み

【SQLite】 sqlファイルに引数を渡したい

バッチでoracleでいう sqlplus scott/tiger@orcl @test.sql "%1" のようなことをSQLiteでやりたいのですが、可能でしょうか? ※ sqlite3.exe Sample.db < test.sql "%1" みたいなことです。

みんなの回答

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

SQLite のコマンドライン用はもってないので、確認してませんが、ドキュメントを読む限りでは、引数は データベース名 と sql文用文字列 の2つのみでは? http://www.sqlite.org/cli.html < でコマンド記述ファイルを受け取るのは、shellからの入力切り替え機能として受け取っているので、それ以降の記述は無視されるかと思われます。後方に書くとすればshellのパイプ処理記述なので、sqlite3への引数にならないでしょう。 て、結論的には、バッチ内で、テンポラリファイルに、コマンド記述ファイルからの文字列と追加文字列を記述してからテンポラリファイルを入力ファイルとしてsqlite3.exe に送り込めば出来なくはないかな? sql文字列全体の括りに "" を使う必要があるので、sql文内部の文字列には '' のみ使用、識別子には [] を使う必要があります。エスケープ処理はできないので。 -- ex windows バッチファイル記述 @echo off copy /Y %2 temp.sql set tempo_sql=%3 echo %tempo_sql:"=% >> temp.sql sqlite3 %1 < temp.sql rem 以降の行で一応 テンポラリー変数やファイル削除の後始末 del temp.sql set tempo_sql= -- ここまでを sqltest.bat で保存とする -- 実行例(条件:sqltest.bat と test_command.sql が同一ディレクトリーにあり、 sqlite3 が起動できること) >sqltest ex.db test_command.sql "select * from sqlite_master where [type]='table';"

すると、全ての回答が全文表示されます。

関連するQ&A