2017-10-26 49 views
0

私は現在、csvファイルをFirebirdデータベースに読み込む(C++)プログラムを作成しています。アルゴリズム中に、私のテーブルが変更されます。 読み取りプロセス全体に数分かかるので、読み取り部分をオプションにしました。したがって、データベースにデータがすでに埋め込まれている場合、ユーザーは更新を行わないと決定できます。Firebirdでテーブルを複製する

回以上のプログラムを実行している場合は、私が代わりに最後の実行中に変更されたデータを、元のデータを使用したいので、私のように、テーブルtable1_backupを作成

のような何かを考えます(select * from table1);プログラムを再起動したときに

、その後は、

テーブルtable1を削除する(場合には、我々は、データを更新する必要はありません)。 テーブルtable1を(select * from table1_backup)として作成します。

一見、Firebirdの中でテーブルを複製することは、このように動作しません。

他のアイデアはありますか?

+0

プログラム実行の間に新しいテーブルにデータを保持する必要がありますか?それともいつもクリアしていますか?異なるプログラムを一緒に使用してその新しいテーブルを操作できますか、または1つのプログラムだけがそれを排他的に使用できますか?テーブルを作成する必要はなく、接続解除時に完全に削除されるようにデータをロードするだけです。 GTT - https://stackoverflow.com/tags/global-temp-tables/info –

+0

http://www.firebirdfaq.org/faq217/ –

答えて

0

Firebirdの別のテーブルからテーブルを作成することはできません。 Does Firebird support creating tables using SELECT statement?も参照してください。

コメントでArioch 'Theが提案したように、代わりにglobal temporary tablesを探している可能性があります。グローバル一時テーブルには永続DDLがありますが、データは単一のトランザクション(on commit delete rows)またはデータを挿入した接続(on commit preserve rows)にのみ表示されます。

一時的なテーブルをステージング領域として使用して、データベースを永続的に変更することができます。

関連する問題