我正在使用存储过程将大型csv文件批量插入到表中,所有这些都在一个设置为varchar(8000)
的字段中。我必须这样做,因为一些数据用引号括起来,有些则不是。在SQL Server 2008中可用作批量导入的数据文件,CSV文件必须符合以下限制:
我的数据是:
Field1
"data", "data2", "data3", "data4", 123, 567, 354, 5,64,4565,54
现在使用SQL Server进行了一次临时表。我现在如何清理数据并插入到表格中,如下所示:(我已经使用正确的标题设置了这个新表格)
Field1
data
Field2
data 2
Field 3
data 3
等等。
最终,它需要在存储过程中执行,因为它需要在报告服务中。我一直在看这些函数,但是当一些字段没有双引号时我该如何使它工作呢?逗号就够了吗? XML函数也是最好的吗?
答案 0 :(得分:0)
我采用以下方法导入数据:
在您的情况下,代码的第二部分将是:
insert into FinalTable(col1, . . . )
select (case when left(col1, 1) = '"' then replace(col1, '"', '')
else col1
end),
(case when isnumeric(col2) = 1 then cast(col2 as float)
end),
. . .
from StagingTable
毫无疑问,SSIS中的解决方案或使用格式文件。我更喜欢临时表方法,因为我发现使用登台表更容易从数据库调试数据问题。