sqlite3の適切な使用法の1つは、「インメモリデータベース」です。これは私のC++アプリケーションにとって本当に便利なツールのように思えます。これがCまたはC++でどのように行われるかの例を誰かが持っていますか?私は特に、いくつかのフラットファイルをインメモリデータベースに丸呑みしてから、いくつかの結合を行うための標準的な方法を探しています。
3 に答える
実はとても簡単です。C / C ++ APIを使用してデータベースを開くときは、データベースファイル名として「:memory:」を指定するだけです。これは、エンジンが認識する特別な定数です。PythonやRubyなどの他の言語でも、通常はC / C ++ APIをラップするだけなので、同じことが実際に機能します。詳細については、 http://sqlite.org/c3ref/open.htmlを参照してください。
ファイル:memory:を開くだけで、それでうまくいくはずです(少なくともPHPではそうです)。
いくつかのフラットファイルを読み取り、それらを結合したいとおっしゃっています。フラットファイルをSQLiteデータベースとして保存できる場合は、一方を他方にアタッチすることで、両方を直接操作できます。
ATTACH foo.db AS foo
次に、次のようにfooのテーブルを参照します。
SELECT * FROM foo.users
このようにして、インメモリデータベースを作成しなくても結合を実行できます。
SQLite で一時ファイルをジャーナルとして使用しないようにしたい場合、たとえば、手動で接続、切断、アタッチ、またはデタッチを要求するとき以外のファイル アクティビティは必要ありません。次に、「:memory:」データベースに接続した後、実行時に次の 2 つのプラグマを使用します。
PRAGMA temp_store=MEMORY;
PRAGMA journal_mode=MEMORY;
ドキュメントから。