SQLiteのC#ラッパーでC#/ .NETを使用しています。私は2つのSQLiteデータベースを併合しようとしていますが、重複は除きます。2つのSQLiteデータベースファイル(C#.NET)をマージする
これは、いくつかの異なるフォーラムの質問から参照されています。 http://old.nabble.com/Attempting-to-merge-large-databases-td18131366.html
私が提供したリンクから構成した以下のクエリを試しましたが、例外が発生しました。データベースはまったくマージされず、元のデータベースはまったく変更されません。
attach 'c:\test\b.db3' as toMerge;
insert into AuditRecords select * from toMerge.AuditRecords;
ここに私の照会コードがあります。
public void importData(String fileLoc)
{
SQLiteTransaction trans;
string SQL = "ATTACH '" + fileLoc + "' AS TOMERGE";
SQLiteCommand cmd = new SQLiteCommand(SQL);
cmd.Connection = connection;
connection.Open();
trans = connection.BeginTransaction();
int retval = 0;
try
{
retval = cmd.ExecuteNonQuery();
}
catch (Exception)
{
trans.Rollback();
MessageBox.Show("An error occurred, your import was not completed.");
}
finally
{
trans.Commit();
cmd.Dispose();
connection.Close();
}
SQL = "INSERT INTO SUBCONTRACTOR SELECT * FROM TOMERGE.SUBCONTRACTOR";
cmd = new SQLiteCommand(SQL);
cmd.Connection = connection;
connection.Open();
trans = connection.BeginTransaction();
retval = 0;
try
{
retval = cmd.ExecuteNonQuery();
}
catch (Exception)
{
trans.Rollback();
MessageBox.Show("An error occurred, your import was not completed.");
}
finally
{
trans.Commit();
cmd.Dispose();
connection.Close();
}
}
私の質問は間違っていますか?そして、insertコマンドに精通している人はいますか?私はそれが必要な重複を除外するかどうかは分かりません。
グレートを試してみてください!それは機能しましたが、重複は削除されません。それをどう扱うべきかアドバイスはありますか?挿入以外に使用できるコマンドがありますか?あなたの助けをもう一度ありがとう。重複を避けるために – CODe
、あなたは2つのテーブルを比較することができます。 {SQL = "SUBCONTRACTOR SELECT *をTOMERGE.SUBCONTRACTORから挿入してください([YOUR_UNIQUE_ID]が入っていない([YOUR_UNIQUE_ID]を子孫から選択する)} – Binil