我有一个文件(有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)