【问题标题】:CSV FormatFile for OPENROWSET BULK catering for both plain COMMA and "COMMA" [duplicate]CSV FormatFile for OPENROWSET BULK 同时满足普通 COMMA 和“COMMA”[重复]
【发布时间】:2012-07-18 21:37:35
【问题描述】:

可能重复:
SQL Server Bulk insert of CSV file with inconsistent quotes

我得到了一百万行 CSV 文件,可以导入到 SQL Server 中,基本上是这样的:

"A",B,C,D,"E","F"

我在过去使用 OPENROWSET BULK 和一个格式文件来满足 CSV 文件的要求,在任何数据或所有带引号的列周围都没有引号。

人们通常如何处理这样的 CSV 和 FormatFile,其中一些有引号而一些字段没有?

注意:我将与另一个表交叉连接,而不是从 CSV 导入所有数据,这就是我使用 OpenRowset Bulk 的原因(而且我也无权访问服务器上的 bcp)。

【问题讨论】:

  • 是的,好地方(搜索/发布问题时没有标记)

标签: sql sql-server sql-server-2008 bulkinsert openrowset


【解决方案1】:

SQL Server Bulk insert of CSV file with inconsistent quotes 中提供的解决方案建议对文件进行预处理。鉴于您的示例,您可以使用以下更新语句来更正数据,但这仅在引号不是包含逗号的数据时才有效。

UPDATE  @table
SET     value = CASE WHEN LEFT(value, 1) = '"'
                          AND RIGHT(value, 1) = '"'
                     THEN SUBSTRING(value, 2, LEN(value) - 2)
                     ELSE value
                END

【讨论】:

  • 如果文本文件中有双引号,此更新如何帮助从文本文件导入数据?
【解决方案2】:

您可以先查找文本文件中的所有双引号并将其替换为空。然后您可以使用逗号(,)作为分隔符进行正常的批量插入。

【讨论】:

    猜你喜欢
    • 2013-07-31
    • 2016-03-18
    • 2018-02-09
    • 2013-08-27
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2022-12-26
    • 2021-07-14
    相关资源
    最近更新 更多