11

sqlite3の適切な使用法の1つは、「インメモリデータベース」です。これは私のC++アプリケーションにとって本当に便利なツールのように思えます。これがCまたはC++でどのように行われるかの例を誰かが持っていますか?私は特に、いくつかのフラットファイルをインメモリデータベースに丸呑みしてから、いくつかの結合を行うための標準的な方法を探しています。

4

3 に答える 3

16

実はとても簡単です。C / C ++ APIを使用してデータベースを開くときは、データベースファイル名として「:memory:」を指定するだけです。これは、エンジンが認識する特別な定数です。PythonやRubyなどの他の言語でも、通常はC / C ++ APIをラップするだけなので、同じことが実際に機能します。詳細については、 http://sqlite.org/c3ref/open.htmlを参照してください。

于 2008-11-20T05:21:49.623 に答える
5

ファイル:memory:を開くだけで、それでうまくいくはずです(少なくともPHPではそうです)。

いくつかのフラットファイルを読み取り、それらを結合したいとおっしゃっています。フラットファイルをSQLiteデータベースとして保存できる場合は、一方を他方にアタッチすることで、両方を直接操作できます。

ATTACH foo.db AS foo

次に、次のようにfooのテーブルを参照します。

SELECT * FROM foo.users

このようにして、インメモリデータベースを作成しなくても結合を実行できます。

于 2008-11-20T05:21:12.170 に答える
5

SQLite で一時ファイルをジャーナルとして使用しないようにしたい場合、たとえば、手動で接続、切断、アタッチ、またはデタッチを要求するとき以外のファイル アクティビティは必要ありません。次に、「:memory:」データベースに接続した後、実行時に次の 2 つのプラグマを使用します。

PRAGMA temp_store=MEMORY;
PRAGMA journal_mode=MEMORY;

ドキュメントから。

于 2008-12-02T04:31:29.443 に答える