【问题标题】:Exporting SQL Server table to CSV issue commas, tabs and quotes将 SQL Server 表导出为 CSV 问题逗号、制表符和引号
【发布时间】:2012-04-13 17:12:08
【问题描述】:

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

我有几个问题:

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

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

【问题讨论】:

    标签: sql-server excel encoding csv


    【解决方案1】:

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

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

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

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

    3) 由于这个原因,不要使用 CSV,使用 XML。甲骨文也处理它..

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

    直接回答你的问题:

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

    在excel中保存到csv有意义吗 不适合我

    在尝试将文件加载到 Oracle 时是否会出现问题? 除非您已经处理了所有特殊字符并通过适当的描述正确地对它们进行了转义,否则可以。

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

    【讨论】:

    • 供应商特别希望 csv 的第一行带有列名。我没有看到从我的 sql 2005 客户端导出到 XML 的选项。
    • @cyberpine 太糟糕了,供应商不接受从 2005 年开始导出的 XML...这里是 linkanother This is MSFTone more...
    • @cyberpine 我要问供应商的是,他们需要如何接收您列出的情况。数据中的逗号应该......如何转义?如果他们说将字段包装在“然后问你是否应该在数据中加倍”以逃避它们?(IE 2和2a)以上
    • xQbert!谢谢..不知道为什么我没有想到..只是逃避那些并让供应商处理它们。
    【解决方案2】:

    我面临着类似的挑战 - 从 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
    

    谢谢! 肯

    【讨论】:

    • 我在尝试使用我的默认 SQL Server 安装运行此程序时收到一个安全错误。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2020-11-24
      • 1970-01-01
      相关资源
      最近更新 更多