【问题标题】:C# how to call “sp_executesql” for bulk insertC#如何调用“sp_executesql”进行批量插入
【发布时间】:2018-03-06 21:22:19
【问题描述】:

我有需要使用 win 表单应用程序加载到 db 的文件 为此,我正在创建批量加载字符串 C# 代码

  private void bt_loadInToTable_Click(object sender, EventArgs e)
        {
            bulkinsert = " BULK INSERT " + tableName + " FROM " + filePath +
        " WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'',BATCHSIZE = 1000,  CHECK_CONSTRAINTS = ON , ERRORFILE = '" + tableName + "file_name.txt' )";

            using (SqlConnection thisConnectionT = new SqlConnection("Server=" + serverName + ";User Id=" + uName + ";Password=" + pass + ";Database=" + dbName + ";"))
            {

                thisConnectionT.Open();

                new SqlCommand(bulkinsert, thisConnectionT);
               // bulkinsert.ExecuteNonQuery();
            }

        }

但是我想我说它有些错误,因为它没有加载,但没有抛出错误
电话应该是exec sp_executesql bulkinsert

这个 C# 代码应该替换这个正在运行的 SQL 代码

DECLARE @bulkinsert NVARCHAR(2000)
set @bulkinsert = 'BULK INSERT ForTest FROM ''D:\\forBulk\\fortest.csv'' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'',BATCHSIZE = 1000 )'

EXEC sp_executesql @bulkinsert

如果我是从 sql 端运行它的插入记录,但不是从 C# 运行

对不起,这可能是一个愚蠢的问题,但我是数据库开发人员

【问题讨论】:

  • 在 C# 中打印 bulkinsert 字符串,复制到 SQL 编辑器中并尝试运行。有什么问题吗?
  • @nbot 是的 ts 工作,但从应用程序没有

标签: c# sql-server load sp-executesql


【解决方案1】:

您可能希望按照this article 中的说明使用SqlBulkCopy 类。

顺便说一句,我会避免通过字符串连接构建查询以减轻 sql 注入攻击。

【讨论】:

    【解决方案2】:

    以下将查询 EXEC('SELECT 1') 发送到您的连接。

    new SqlCommand("EXEC('SELECT 1')", connection);
    

    【讨论】:

    • 但我需要发送这个“BULK INSERT”+tableName+“FROM”+filePath+“ WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'' ,BATCHSIZE = 1000, CHECK_CONSTRAINTS = ON )";
    • OP 询问如何从 C# 进行批量复制,现在如何发送命令。
    • C# 不负责读取文件并插入数据库。 C# 应该使用字符串查询开始批量插入,然后 SQL 应该正在读取文件...
    • @nbot 不是我想要实现的,我正在使用 sql 批量语句构建字符串,我需要将其发送到 sql server
    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2017-07-17
    • 2011-07-28
    • 2010-12-09
    相关资源
    最近更新 更多