【问题标题】:How to export text data from a SQL Server table?如何从 SQL Server 表中导出文本数据?
【发布时间】:2010-11-13 18:20:27
【问题描述】:

我正在尝试使用 MS SQL Server 2005 导入/导出工具来导出表,以便将其导入另一个数据库进行存档。其中一列是文本,因此如果我以逗号分隔导出,当我尝试将其导入存档表时,它对于该字段中带有逗号的行无法正常工作。我应该选择哪些选项来确保我的导入能够正常工作?

【问题讨论】:

    标签: sql sql-server import export etl


    【解决方案1】:

    一年多后,我现在有了一个理想的解决方案来满足我的数据导出需求,感谢https://stackoverflow.com/questions/20363/

    bcp "SELECT * FROM CustomerTable" queryout "c:\temp\CustomerTable.bcp" -N -S SOURCESERVERNAME -T 
    
    bcp TargetDatabaseTable in "c:\temp\CustomerTable.bcp" -N -S TARGETSERVERNAME -T -E
    
    • -N 使用原生类型
    • -T 使用可信连接
    • -S 服务器名
    • -E 保留数据文件中指定的标识值

    在代码中嵌入非常快速和容易。

    【讨论】:

      【解决方案2】:

      除非客户需要,否则我从不使用逗号分隔符。尝试使用 |作为分隔符。如果需要,您也可以使用文本限定符。

      【讨论】:

      • 这与使用逗号分隔的问题相同。如果任何行有 |在其中,它不会正确导入。这种情况比拥有 a 少得多,但仍然很常见,无法正常工作
      • 我每周从 50 或 60 个不同的客户处进行数百次导入,但只有几次我们使用 |在里面。在这些情况下,我们使用 ~ 作为分隔符或添加了文本限定符。在一个案例中,我们要求他们修复 2000 万条记录文件中的一条违规记录,以避免不得不更改流程。如果您正在导出,您可以控制数据并且可以找到带有 | 的记录。并在您进行导出之前修复它们以使用其他字符。使用逗号更难做到这一点,因为使用逗号时数据的含义,而不是使用 |s 时的数据。
      【解决方案3】:

      使用引号作为文本限定符

      文本限定符: 键入要使用的文本限定符。例如,您可以指定用引号将每个文本列括起来。

      【讨论】:

      • 我也尝试使用引号作为文本限定符,但无论如何我的大多数行都有一个 "。据​​我所知,导出的数据无法逃脱现有的 "s
      猜你喜欢
      • 1970-01-01
      • 2021-06-04
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 2014-03-09
      • 2012-09-16
      相关资源
      最近更新 更多