SQL Server sqlcmd导出/批量插入问题

时间:2014-01-10 18:59:18

标签: sql-server bulkinsert sqlcmd

我正在使用sqlcmd导出我的数据 -

-S Server -dDatabase -E -b -r1 -s "|" -i "D:\Scripts\export.sql" -o \\server\export-YYYYMMDD.csv -h-1

它返回一个包含NULL的格式 -

value1 | value2 | datetime
value2 | NULL   | NULL
value3 | value3 | NULL

NULL实际上就像这样显示在CSV中。 NULL。

我似乎无法进行批量插入。它一直在失败那些NULL值。我试过制作一个格式文件。我不知道怎么告诉它是否看到NULL将该值插入为NULL。

USE database;
GO
DELETE table;
GO
BULK INSERT table 
   FROM '\\server\export-YYYYMMDD.csv' 
   WITH (FORMATFILE = '\\server\format.xml');
GO
SELECT * FROM table;
GO

如果我改变文件并将NULL更改为'''插件工作正常但我不能为了自动化而这样做。

这些数据库没有任何连接(单独的防火墙)因此需要导出/导入。

我应该接近另一种方式,还是我缺少一些东西?

1 个答案:

答案 0 :(得分:2)

原来我接近错了。

我发现以下documentation允许我更改导出以使用BCP而不是这样 -

bcp "select * from dbo.table" queryout test.csv -t, -c -S servername\instance -d Database -T

这给了我带NULL的数据作为空格,这使我的批量插入能够正常工作。