Używam C#/.NET z opakowaniem C# dla SQLite. Próbuję scalić dwie bazy danych SQLite jednocześnie wykluczając duplikaty.Scalanie dwóch plików bazy danych SQLite (C# .NET)
Znalazłem to, o czym mowa w kilku różnych pytaniach na forum. http://old.nabble.com/Attempting-to-merge-large-databases-td18131366.html
Próbowałem wypróbować poniższe zapytania, które zostały uporządkowane na podstawie podanego linku, ale powodują wyjątki, bazy danych nie są w ogóle łączone, a oryginalna baza danych nie jest w żaden sposób zmieniana.
attach 'c:\test\b.db3' as toMerge;
insert into AuditRecords select * from toMerge.AuditRecords;
Oto mój kod zapytania.
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();
}
}
Moje pytanie brzmi: co robię źle? A czy ktoś jest zaznajomiony z poleceniem wstawiania? Nie jestem pewien, czy wykluczy duplikaty, jakie będę potrzebować.
Great! To zadziałało, ale nie usuwa duplikatów. Czy masz jakieś porady, jak sobie z tym poradzić? Czy istnieje inne polecenie, które mogę użyć oprócz wstawienia? Jeszcze raz dziękuję za pomoc. – CODe
, aby uniknąć duplikatów, można porównać dwie tabele, takie jak. {SQL = "WSTAW NA WYBÓR SUBKONTAKTORA * OD TOMERGE.SUBCONTRACTOR GDZIE [YOUR_UNIQUE_ID] NIE JEST (WYBIERZ [YOUR_UNIQUE_ID] OD PODWYKONAWCY)} – Binil