我使用.csv文件大容量插入到我的sql server数据库中。问题是DestinationTableName因为当我为DestinationTableName使用字符串时,会出现错误异常
System.InvalidOperationException:无法访问目标表
正如你在截图中看到的。
如果使用“test”如copy.destinationtablename=“test”;则工作正常
c# - SQL批量DestinationTableName-LMLPHP

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);
    }
}

最佳答案

就像创建表时一样:

"create table ['"+symbolName+"']

这里的技巧可能是转义表名以补偿其中的连字符,因此:
copy.DestinationTableName = "[" + symbolName + "]";

注意:如果可能的话,通常最好使用不需要转义的名称。但是…如果成功的话。

关于c# - SQL批量DestinationTableName,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49661627/

10-10 07:20