C# 关于sql server中大容量插入的咨询
我有一个WinC窗体程序,需要插入sql server 该文件由文本选项卡分隔 有时它包含3列:C# 关于sql server中大容量插入的咨询,c#,sql-server,bulkinsert,C#,Sql Server,Bulkinsert,我有一个WinC窗体程序,需要插入sql server 该文件由文本选项卡分隔 有时它包含3列: BAR DES MAK 111 aaa 222 333 bbb 333 . . 有时它包含5列: BAR DES MAK PRI MLA 111 aaa 222 1.1 2.2 333 bbb 333 3.3 4.4 . . sql server表为: BAR nvarchar
BAR DES MAK
111 aaa 222
333 bbb 333
.
.
有时它包含5列:
BAR DES MAK PRI MLA
111 aaa 222 1.1 2.2
333 bbb 333 3.3 4.4
.
.
sql server表为:
BAR nvarchar(250)
DES nvarchar(250)
MAK nvarchar(250)
PRI nvarchar(250)
MLA nvarchar(250)
我尝试这样插入:
SQL = @"BULK INSERT CatTbl FROM 'd:\TEST\TEST.txt' WITH (CODEPAGE=1255,FIELDTERMINATOR = '\t')";
Cmd = new SqlCommand(SQL, Conn);
Cmd.ExecuteNonQuery();
Cmd.Dispose();
如果有5列,它工作的很好,但如果有3列,它崩溃
我搜索了一下,没有找到解决办法。有人有主意吗?批量插入不是很灵活。解决方案是将这些列加载到只有一个varchar列的表中,然后稍后进行拆分/解析 如果表与文件不匹配,请在表上创建一个与文件不匹配的视图,然后插入到视图中
-- Run this once in SSMS to create the view
CREATE VIEW MyView AS SELECT BAR,DES,MAK FROM CatTbl;
-- If your file has three columns, use this
BULK INSERT MyView FROM 'd:\TEST\TEST.txt' WITH (CODEPAGE=1255,FIELDTERMINATOR = '\t')
-- If your file has five columns, use this
BULK INSERT CatTbl FROM 'd:\TEST\TEST.txt' WITH (CODEPAGE=1255,FIELDTERMINATOR = '\t')
msdn的副本。将同一个问题独立发布到多个论坛只会浪费精力和因果报应。一个可能无用的旁注:请记住,如果有任何问题需要取消检查,BulkInsert将强制您的外国密钥。