1

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

我有几个问题:

  • 我可以从 SQL Server 的表中删除这些字符,但有更聪明的方法吗?
  • 尝试将文件加载到 Oracle 时,从 Excel 保存 CSV 文件会导致问题吗?
  • 我们需要第一行有列名。是否有任何 SQL 方法可以一口气生成所有文件(第一行中的标题),而不是使用导出到平面文件?

更新:我正在尝试将 MSSQL 导出到 excel,但有些表给我一个错误“定义的字段太多”

4

3 回答 3

2

我相信你在这里有几个选择。

1) 选择不同的分隔符(不在输出中的分隔符)~ 或 ` 或 | 可能有用

2) 将每个输出字段用引号括起来,csv excel 知道将其视为一个字段。

2a)如果您的输出包含“,那么您需要将它们加倍,以便 CSV/Excel 知道您的意思是“,而不是新字段的结尾或开头。

3)因此不要使用CSV,使用XML。甲骨文也处理它..

4) 使导入/导出位置基于而不是描绘

所以直接回答你的问题:

但有更聪明的方法吗?使用 XML、SQL server 和 Oracle 都支持并可以从中导入。

在excel中完成后保存到csv是否有意义 不是我

无论如何尝试将文件加载到 Oracle 中会导致问题吗?除非您已经处理了所有特殊字符并通过适当的描述正确地对它们进行了转义,否则它可以。

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

于 2012-04-13T17:26:08.700 回答
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

谢谢!肯

于 2014-12-03T16:44:22.113 回答
0

首先准备一个生成所需数据的 SQL 语句。"让 SQL用两个双引号 ( )替换任何双引号字符 ( ""),例如SELECT REPLACE(CAST(field1 as NVarchar(MAX)),'"','""') AS field1 FROM table1.

  • 在对象资源管理器中右键单击所需的数据库
  • 在上下文菜单中,选择任务->导出数据
  • 来源:选择SQL Serve Native Client(在列表末尾)
  • 目的地:选择Flat file
  • 浏览以选择文件,例如exported.csv
    • 查看Unicode
    • Text qualifier为: "输入一个双引号字符
  • 选择单选项目符号:编写查询以指定要传输的数据
  • 粘贴您的 SQL 代码
  • 点击进入Finish
  • 用记事本++打开文件
    • 菜单:编码->转换为 UTF-8
    • 保存存档

文本限定符是每个字段周围使用的引号字符。如果您选择 csv 文件,它会自动正确设置行尾和列分隔符。

于 2018-06-22T19:50:58.813 回答