我在尝试着bulk insert
来自 CSV 文件的表测试中的几条记录,
CREATE TABLE Level2_import
(wkt varchar(max),
area VARCHAR(40),
)
BULK
INSERT level2_import
FROM 'D:\test.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
批量插入代码应该删除第一行并将数据插入表中。它很好地摆脱了第一行,但在分隔符部分感到困惑。第一列是 wkt,列值用双引号引起来,并且 value 内有逗号。
所以我想我的问题是是否有办法告诉BULK INSERT
无论其中是否有逗号,双引号部分都是一列?
CSV 文件看起来像这样,
"MULTIPOLYGON (((60851.286135090661 510590.66974495345,60696.086128673756 510580.56976811233,60614.7860844061 510579.36978015327,60551.486015895614)))", 123123.22
您需要使用“格式文件”来实现批量插入的文本限定符。本质上,您需要告诉批量插入每个字段中可能存在不同的分隔符。
创建一个名为“level_2.fmt”的文本文件并保存。
11.0
2
1 SQLCHAR 0 8000 "\"," 1 wkt SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 40 "\r\n" 2 area SQL_Latin1_General_CP1_CI_AS
第一行“11.0”指的是您的 SQL 版本。第二行显示您的表 [level2_import] 有两列。之后的每一行将描述一列,并遵循以下格式:
[源列号][数据类型][最小大小][最大大小][分隔符模式][目标列号][目标列名称][数据库区分大小写]
创建该文件后,您可以使用以下批量插入语句读入数据:
BULK INSERT level2_import
FROM 'D:\test.csv'
WITH
(
FIRSTROW = 2,
FORMATFILE='D:\level_2.fmt'
);
参考这个blog http://www.advancesharp.com/blog/1083/bulk-insert-with-text-qualifier-in-sql-server有关格式文件的详细说明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)