【问题标题】:BCP Imported File in UTF-8 Encoded FileUTF-8 编码文件中的 BCP 导入文件
【发布时间】:2014-08-04 06:17:56
【问题描述】:

我使用 SQL Server 2008 中的 BULK Copy (BCP) 实用程序生成了一个 CSV 文件。我想要一个采用 UTF-8 编码的文件。我正在使用下面的代码来生成文件。任何人都可以帮助我解决这个问题。

DECLARE @Path VARCHAR(100) ,
@sql VARCHAR(8000) ,
@DBName VARCHAR(100) ,
@exePath VARCHAR(100),

SELECT @sql = 'bcp "SELECT * FROM '+@DBName+'..ABC" queryout  '+@Path+'\'+'ABC'.csv -c -k     -t, -U sa -P abc -T -S ' + @@servername

执行@exePath @sql;

【问题讨论】:

    标签: sql sql-server encoding utf-8 bcp


    【解决方案1】:

    Sql Server 2008 不支持 utf-8,但您可以使用“-w”而不是“-c”,这将使用 DiMach 提到的 UTF-16,问题是 csv 文件格式不正确。

    如果您尝试导出特定语言的 csv 文件,例如法语(法语包含特殊字符:à é â ç ...),您需要知道还有其他解决方案:

    • 首先:尝试在互联网上搜索支持目标语言所有字符的编码,例如法语我们可以找到 ISO-8859-1

      李>
    • 第二:在互联网上搜索与您找到的编码相关的页面代码,因为 ISO-8859-1 是 1252

    • 第三:在你的sql server中执行下面的sql请求,看看你的sql server是否支持这种编码

      选择名称,COLLATIONPROPERTY(name, 'CodePage') 作为 Code_Page,描述 从 sys.fn_HelpCollat​​ions() where COLLATIONPROPERTY(name, 'CodePage')=1252 order by Code_Page

    • 第四个:在 BCP 命令中仅使用 -C 1252(删除 -c 和 -w)

    希望对你有帮助

    【讨论】:

    • 什么版本的sql支持bcp的utf 8,是2014以后的吗?我在 2012 年
    【解决方案2】:

    只需将“-c”参数替换为“-w”即可

    SELECT @sql = 'bcp "SELECT * FROM '+@DBName+'..ABC" queryout  '+@Path+'\'+'ABC'.csv -w -k     -t, -U sa -P abc -T -S ' + @@servername
    

    【讨论】:

    • "-w" 标志强制 bcp 以 Unicode 格式导出,在 MS SQL 中是 UTF-16,而不是 UTF-8。
    猜你喜欢
    • 2018-09-12
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2011-03-16
    相关资源
    最近更新 更多