导出到平面文件CSV后,带逗号,引号和标签的列会导致Excel出现问题。供应商需要在Excel中读取文件以进行手动更改,然后以平面文件CSV格式将其用于将PL / SQL加载到Oracle表中。
我有几个问题:
更新:我正在尝试将MSSQL导出为excel,但是有些表给出了“定义了太多字段”的错误
答案 0 :(得分:2)
我相信你有几个选择。
1)选择一个不同的分隔符(一个不在输出中)〜或`或|可能会工作
2)用引号包装每个输出字段,csv excel知道将其视为一个字段。
2a)如果你的输出包含“那么你需要加倍它们以便CSV / Excel知道你的意思是”而不是结束或开始新的字段。
3)因此不要使用CSV,请使用XML。 Oracle也处理它..
4)根据导入/导出位置而不是描绘
如此直接回答您的问题:
但有更聪明的方法吗?使用XML,SQL server& Oracle既支持也可以从中导入。
在excel中完成后保存到csv是否有意义 不是我
尝试将文件加载到Oracle中会导致问题吗? 除非你已经处理了所有特殊字符并通过适当的描述正确地逃脱了它们,否则它可以。
以一种方式生成所有文件(第一行中的磁贴)而不是使用导出到平面文件的任何SQL方式?我再次建议使用XML或EDI。
答案 1 :(得分: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
谢谢! 肯
答案 2 :(得分:0)
首先准备一条产生所需数据的SQL语句。让SQL用两个双引号("
),例如""
替换任何双引号字符(SELECT REPLACE(CAST(field1 as NVarchar(MAX)),'"','""') AS field1 FROM table1
)。
SQL Serve Native Client
(在列表末尾)Flat file
Unicode
Text qualifier
输入一个双引号字符:“ Finish
文本限定符是每个字段周围使用的引号字符。如果选择一个csv文件,它将自动正确设置行尾和列分隔符。