经过一番调查后,我无法从TeraData中的SQLClient中找到正确的SQLBulkCopy替代品。任何机构都可以建议我在C#中使用像TebData的SQLBulkCopy吗?我需要在TD中插入几百万行 需要这个来比较一组从外部数据库检索并转储到TD中的行,并与TeraData中已有的数据进行比较。
任何建议都表示赞赏。
答案 0 :(得分:1)
我找不到相应的东西,但这对我来说是可以接受的。此外,我怀疑可以调整UpdateBatchSize以匹配您的特定数据以提高速度。
如上所述,您的源表和目标表必须具有相同的列(例如BulkCopy,但不一定是相同的顺序)。
TdConnection tdCon = new TdConnection(tdConString);
SqlConnection sqlCon1 = new SqlConnection(serverOneConString);
// Get schema for destination table
var query = "SELECT * FROM [Destination_Table] where 0 = 1";
using (TdDataAdapter insertAdapter = new TdDataAdapter(query, tdCon))
{
DataSet ds = new DataSet();
insertAdapter.Fill(ds);
// Load data from source table
using (SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * FROM [Source_Table]", sqlCon1)) {
dataAdapter.SelectCommand.CommandTimeout = 240;
dataAdapter.Fill(dt);
}
// Move data from source to destination, matching column names
foreach (DataRow row in dt.Rows) {
var newRow = ds.Tables[0].NewRow();
foreach (DataColumn column in dt.Columns) {
newRow[column.ColumnName] = row[column.ColumnName];
}
ds.Tables[0].Rows.Add(newRow);
}
TdCommandBuilder builder = new TdCommandBuilder(insertAdapter);
insertAdapter.UpdateBatchSize = 250;
insertAdapter.Update(ds);
}