相关疑难解决方法(0)

如何在最短的时间内插入1000万条记录?

我有一个文件(有1000万条记录),如下所示:

    line1
    line2
    line3
    line4
   .......
    ......
    10 million lines
Run Code Online (Sandbox Code Playgroud)

所以基本上我想在数据库中插入1000万条记录.所以我读了文件并将其上传到SQL Server.

C#代码

System.IO.StreamReader file = 
    new System.IO.StreamReader(@"c:\test.txt");
while((line = file.ReadLine()) != null)
{
    // insertion code goes here
    //DAL.ExecuteSql("insert into table1 values("+line+")");
}

file.Close();
Run Code Online (Sandbox Code Playgroud)

但插入需要很长时间.如何使用C#在尽可能短的时间内插入1000万条记录?

更新1:
批量插入:

BULK INSERT DBNAME.dbo.DATAs
FROM 'F:\dt10000000\dt10000000.txt'
WITH
(

     ROWTERMINATOR =' \n'
  );
Run Code Online (Sandbox Code Playgroud)

我的表如下:

DATAs
(
     DatasField VARCHAR(MAX)
)
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误:

Msg 4866,Level 16,State 1,Line 1
批量加载失败.第1行第1列的数据文件中的列太长.验证是否正确指定了字段终止符和行终止符.

消息7399,级别16,状态1,行1
链接服务器"(null)"的OLE DB提供程序"BULK"报告错误.提供商未提供有关错误的任何信息.

消息7330,级别16,状态2,行1
无法从OLE DB提供程序"BULK"获取链接服务器"(null)"的行.

下面的代码工作:

BULK INSERT DBNAME.dbo.DATAs
FROM 'F:\dt10000000\dt10000000.txt'
WITH
(
    FIELDTERMINATOR = '\t',
    ROWTERMINATOR …
Run Code Online (Sandbox Code Playgroud)

c# sql-server import bulkinsert table-valued-parameters

26
推荐指数
2
解决办法
1万
查看次数