UTF-8编码文件中的BCP导入文件

时间:2014-08-04 06:17:56

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

我在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

exec @exePath @sql;

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

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

  • 第三:在您的sql服务器中执行以下sql请求,以查看您的sql服务器是否支持此编码

    选择名称,COLLATIONPROPERTY(name,'CodePage')作为Code_Page,说明 从sys.fn_HelpCollat​​ions()中获得,其中COLLATIONPROPERTY(name,'CodePage')= 1252按Code_Page排序

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

希望对您有帮助