Ich versuche, um die Daten zu migrieren für die Liste der Mitarbeiter von informix
db sqlserver2012
db, so zunächst wählen iMigrate Daten von Informix db Sqlserver db
-Die Daten aus den Tabellen in informix
wie folgt aus:
string cmdText = "select * from permission where emp_num in(" + emplyeeRange + ") and perm_date>=? and perm_date <=?";
DataTable permissionDT = ifx_conn.Return_DataTable(cmdText, CommandType.Text, paramList1);
cmdText = "select * from holid where emp_num in(" + emplyeeRange + ") and end_date>=? and start_date<=? ";
DataTable vacationDT = ifx_conn.Return_DataTable(cmdText, CommandType.Text, paramList1);
cmdText = "select * from empmission where emp_num in(" + emplyeeRange + ") and date(to_date)>=? and date(from_date)<=? ";
DataTable missionDT = ifx_conn.Return_DataTable(cmdText, CommandType.Text, paramList1);
-Dann i die Daten von sqlserver
im gleichen Bereich Datum wie folgt löschen:
cmdText = "delete from permission where emp_num in(" + emplyeeRange + ") and perm_date>[email protected]_date and perm_date <[email protected]_date";
sql_command.CommandType = CommandType.Text;
sql_command.Parameters.AddWithValue("@from_date", from_date.ToShortDateString());
sql_command.Parameters.AddWithValue("@to_date", to_date.ToShortDateString());
sql_command.CommandText = cmdText;
result = sql_command.ExecuteNonQuery();
if (result >= 0)
{
cmdText = "delete from holid where emp_num in(" + emplyeeRange + ") and end_date>[email protected]_date and start_date<[email protected]_date ";
sql_command.CommandText = cmdText;
result = sql_command.ExecuteNonQuery();
if (result >= 0)
{
cmdText = "delete from empmission where emp_num in(" + emplyeeRange + ") and to_date>[email protected]_date and from_date<[email protected]_date";
sql_command.CommandText = cmdText;
result = sql_command.ExecuteNonQuery();
}
}
-Dann Legen Sie die aktualisierten Daten in sqlserver
wie folgt aus:
cmdText = "insert into permission select * from @permissionDT ";
sql_command.CommandText = cmdText;
sql_command.Parameters.Clear();
sql_param = sql_command.Parameters.AddWithValue("@permissionDT", permissionDT);
sql_param.SqlDbType = SqlDbType.Structured;
sql_param.TypeName = "dbo.permissionType";
result = sql_command.ExecuteNonQuery();
if (result >= 0)
{
cmdText = "insert into holid select * from @vacationDT";
sql_command.CommandText = cmdText;
sql_command.Parameters.Clear();
sql_param = sql_command.Parameters.AddWithValue("@vacationDT", vacationDT);
sql_param.SqlDbType = SqlDbType.Structured;
sql_param.TypeName = "dbo.holidType";
result = sql_command.ExecuteNonQuery();
if (result >= 0)
{
cmdText = "insert into empmission select * from @missionDT";
sql_command.CommandText = cmdText;
sql_command.Parameters.Clear();
sql_param = sql_command.Parameters.AddWithValue("@missionDT", missionDT);
sql_param.SqlDbType = SqlDbType.Structured;
sql_param.TypeName = "dbo.empmissionType";
result = sql_command.ExecuteNonQuery();
}
}
Mein Hauptproblem ist:
Dieser Prozess die Leistung von sqlserver
so lange Zeit und verringern nimmt , Wie kann ich diesen Code und die Anfragen bezüglich der db-Operationen optimieren?
Sind Sie einfach Datenmigration oder etwas mehr als das zu tun? Warum müssen Sie vor dem Einfügen von Ihrem Ziel löschen? – agfc
@agfc: Ich mache einige Verarbeitung danach. Ich muss löschen, weil die Daten, die ich migrieren möchte dupliziert werden oder einige Datensätze aus der Quelle gelöscht oder ein bestimmtes Feld in der Quelle aktualisiert wird. Dieser Vorgang wird mehrmals durchgeführt, so dass ich muss gelöscht und dann eingefügt werden. –