SQL 批量 DestinationTableName
SQL Bulk DestinationTableName
我使用 .csv
文件批量插入到我的 SQL 服务器数据库中。问题是 DestinationTableName
因为当我为 DestinationTableName
使用字符串时,我得到错误异常
System.InvalidOperationException: Cannot access destination table
如您在屏幕截图中所见。
如果使用 "test" 比如 copy.DestinationTableName = "test";它工作正常
string symbolName = dt.Rows[1][0].ToString();
string strConnection = @"Data Source =.\SQLEXPRESS; AttachDbFilename = C:\USERS\JEF\DOCUMENTS\DATABASE1.MDF; Integrated Security = True; Connect Timeout = 30; User Instance = True";
SqlConnection condb2 = new SqlConnection(strConnection);
string createTablerow ="create table ['"+symbolName+"'] (code1 VARCHAR(100) COLLATE Arabic_CI_AI_KS_WS,date1 varchar(50),open1 varchar(50),high1 varchar(50),low1 varchar(50),close1 varchar(50),vol1 varchar(50))";
using (SqlConnection connection = new SqlConnection(strConnection))
{
SqlCommand command1 = new SqlCommand(createTablerow, connection);
connection.Open();
command1.ExecuteNonQuery();
}
using (SqlConnection cn = new SqlConnection(strConnection))
{
cn.Open();
using (SqlBulkCopy copy = new SqlBulkCopy(cn))
{
copy.ColumnMappings.Add(0, "code1");
copy.ColumnMappings.Add(1, "date1");
copy.ColumnMappings.Add(2, "open1");
copy.ColumnMappings.Add(3, "high1");
copy.ColumnMappings.Add(4, "low1");
copy.ColumnMappings.Add(5, "close1");
copy.ColumnMappings.Add(6, "vol1");
copy.DestinationTableName = symbolName;
copy.WriteToServer(dt);
}
}
就像您创建 table 时所做的那样:
"create table ['"+symbolName+"']
这里的技巧可能是转义 table 名称以补偿其中的连字符,因此:
copy.DestinationTableName = "[" + symbolName + "]";
注意:如果可能,通常最好坚持使用不需要转义的名称。但是...如果它有效。
我使用 .csv
文件批量插入到我的 SQL 服务器数据库中。问题是 DestinationTableName
因为当我为 DestinationTableName
使用字符串时,我得到错误异常
System.InvalidOperationException: Cannot access destination table
如您在屏幕截图中所见。
如果使用 "test" 比如 copy.DestinationTableName = "test";它工作正常
string symbolName = dt.Rows[1][0].ToString();
string strConnection = @"Data Source =.\SQLEXPRESS; AttachDbFilename = C:\USERS\JEF\DOCUMENTS\DATABASE1.MDF; Integrated Security = True; Connect Timeout = 30; User Instance = True";
SqlConnection condb2 = new SqlConnection(strConnection);
string createTablerow ="create table ['"+symbolName+"'] (code1 VARCHAR(100) COLLATE Arabic_CI_AI_KS_WS,date1 varchar(50),open1 varchar(50),high1 varchar(50),low1 varchar(50),close1 varchar(50),vol1 varchar(50))";
using (SqlConnection connection = new SqlConnection(strConnection))
{
SqlCommand command1 = new SqlCommand(createTablerow, connection);
connection.Open();
command1.ExecuteNonQuery();
}
using (SqlConnection cn = new SqlConnection(strConnection))
{
cn.Open();
using (SqlBulkCopy copy = new SqlBulkCopy(cn))
{
copy.ColumnMappings.Add(0, "code1");
copy.ColumnMappings.Add(1, "date1");
copy.ColumnMappings.Add(2, "open1");
copy.ColumnMappings.Add(3, "high1");
copy.ColumnMappings.Add(4, "low1");
copy.ColumnMappings.Add(5, "close1");
copy.ColumnMappings.Add(6, "vol1");
copy.DestinationTableName = symbolName;
copy.WriteToServer(dt);
}
}
就像您创建 table 时所做的那样:
"create table ['"+symbolName+"']
这里的技巧可能是转义 table 名称以补偿其中的连字符,因此:
copy.DestinationTableName = "[" + symbolName + "]";
注意:如果可能,通常最好坚持使用不需要转义的名称。但是...如果它有效。