2012-04-13 140 views
0

导出到平面文件CSV后,包含逗号,引号和制表符的列会导致Excel出现问题。供应商需要在Excel中读取文件以进行手动更改,然后需要使用平面文件格式CSV格式将PL/SQL加载到Oracle表中。将SQL Server表导出为CSV问题逗号,制表符和引号

我可以从SQL Server中的表中删除这些字符,但有没有更聪明的方法?在Excel中完成时保存为CSV是否有意义,并且在尝试将文件加载到Oracle时会导致问题?

此外,我们需要第一行有列名..任何SQL方式来产生所有文件在一举(第一行瓷砖),而不是使用导出到平面文件?

更新:我在尝试MSSQL导出到Excel,但一些表给我的“定义的字段太多”

回答

2

的错误,我相信你有几个选择这里。

1)选择一个不同的分隔符(不在你的输出中)〜或`或or |可能工作

2)将每个输出字段换成引号,csv excel知道把它当作一个字段。 2a)如果你的输出包含“那么你需要将它们加倍,这样CSV/Excel就知道你的意思是”而不是结束或开始一个新的领域。

3)不要因为这个原因使用CSV,请使用XML。甲骨文处理它太..

4)使基础,而不是划定

所以直接答复您的问题导入/导出位置:

但有一个更聪明的方式?使用XML,SQL服务器& Oracle既支持,也可以从中导入。

是否有意义保存到CSV在Excel中完成 对我来说不是

时候会试图将文件加载到Oracle反正时cuase问题? 除非你已经处理了所有的特殊字符并且正确划定了它们,否则它可以。

任何SQL方式一次性生成所有文件(第一行中的图块)而不是使用导出到平面文件?再次建议XML或EDI。

+0

供应商特别希望csv与列名的第一行一致。我没有看到从我的sql 2005客户端导出到XML选项。 – o365spo 2012-04-13 18:11:06

+0

@cyberpine太糟糕了,供应商不接受XML,只要从2005年导出...这里是[链接](http://netrsc.blogspot.com/2008/01/export-data-from-sql-server (http://msdn.microsoft.com/zh-cn/library/ms191184(v=sql.90).aspx#bulk_export_xml_data)和[另一个这是MSFT](http://msdn.microsoft.com/zh-cn/library/ms191184(v = sql.90).aspx#bulk_export_xml_data) ](http://www.sqldbatips.com/showarticle.asp?ID=23)... – xQbert 2012-04-14 17:48:08

+1

@cyberpine我会问供应商他们是如何需要接收你列出的情况。逗号的数据应该......逃过了怎么样?如果他们说包装字段在“然后问你是否应该加倍”在数据中以逃避它们?(IE 2和2a) – xQbert 2012-04-14 17:54:37

0

我面临着一个类似的挑战 - 从SQL导出到Excel ...同时从查询结果中轻松完成,右键单击并将结果保存到CSV中。问题是任何包含逗号的列都会破坏表的结构。

我使用OPENROWSET解决了这个问题,并将数据直接输入到Excel文件中。最伪证明的方式,我发现做到这一点:这里SQL Server export to Excel with OPENROWSET

虽然我相信我用较新的Excel和MSSQL的版本,是我的代码:

insert into OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Test.xlsx', [Sheet1$]) 
select * from TestTable 

谢谢! Ken