我有需要插入sql-server的C#WinForm程序。
文件为文本(制表符分隔)。
有时包含(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表是CatTbl:
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列,则崩溃
我搜索并没有找到解决方案。有人有主意吗?
答案 0 :(得分:0)
批量插入不是很灵活。一种解决方案是将这些列加载到仅包含一个varchar列的表中,然后在以后进行拆分/解析。
答案 1 :(得分:0)
如果表与文件不匹配,请在该表上创建一个视图,然后将其插入视图
-- 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')