如何将值设置为批量插入参数?

时间:2015-06-30 09:40:00

标签: c# sql-server

我正在编写此代码,用c#:

运行sql server脚本
string sqlConnectionString = "Data Source=.;Initial Catalog=SERVERRAREPORT;Integrated Security=True";
            //string sqlConnectionString = "Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True";
            FileInfo file = new FileInfo("d:\\behzadBULK.sql");
            string script = file.OpenText().ReadToEnd();
            SqlConnection conn = new SqlConnection(sqlConnectionString);
            Microsoft.SqlServer.Server server = new Microsoft.SqlServer.Server(new ServerConnection(conn));
            server.ConnectionContext.ExecuteNonQuery(script);


进入behzadBULK.sql我写下这段代码:

BULK INSERT TEMPO
FROM 'd:\3.csv'
WITH(
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n',
    CODEPAGE = '1256'
  );


进入批量插入,从参数设置文件名,该参数是静态的,但我想在c#应用程序浏览文件中用浏览器选择文件并设置文件名从批量插入参数。
我的计划是这样的:
enter image description here

1 个答案:

答案 0 :(得分:2)

这是批量插入的结构:

BULK INSERT 
   [ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ] 
  FROM 'data_file' 
 [ WITH ...

因为文件名必须是静态的,所以您可以执行以下操作:

DECLARE @sql NVARCHAR(4000) = 'BULK INSERT TEMPO FROM ''' + @FileName + ''' WITH ( FIELDTERMINATOR ='','', ROWTERMINATOR =''\n'' )';
EXEC(@sql);