【发布时间】:2015-01-30 05:43:58
【问题描述】:
我正在使用以下命令(我稍微简化了一点)对供应商提供的 .csv 文件进行了相当直接的导入:
插入 ... 从 OPENROWSET (Bulk 'CSVFileName', FORMATFILE ='XMLFormatFileName', FIRSTROW = 2, MAXERRORS = 0 ) AS BulkLoadFile
CSV 文件格式如下所示(您可能需要点击查看图片,因为我是 StackOverflow 的新手,我还不能直接发布图片):
http://i.stack.imgur.com/qZMwV.jpg
我的问题是计数的最后一行...它导致导入失败!
仅供参考 >>> 是的,我知道你可以使用“SET NOCOUNT ON;”但我不生成这个文件,所以这不是一个选项。
现在我打开文件并删除最后一行,然后在导入前重新保存。 (注意:我还删除了以绿色显示的前 2 行,因为我已经在文件中,但前两行不是问题,因为我可以使用 FIRSTROW = 4 开关跳过这些行)。
所以我的问题是:
有没有办法跳过最后一行?
或
有什么方法可以获取行数并使用 LAST ROW 开关?即最后一行 = myCSVfile 中的计数(*)
或
既然它总是以“Total:”开头,那么无论如何要添加 WHERE 子句吗?即第一列中的 WHERE 值不像 'Total:%'
或
这是 SSIS 可以更好地处理的事情吗?如果是这样,我可以将此导入例程移至 SSIS。
在此先感谢...我期待真正实现这一点的自动化,而不必在每次导入时都打开这个文件(一天多次)。
D3Y
【问题讨论】:
标签: sql-server csv openrowset nocount