我在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;
答案 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_HelpCollations()中获得,其中COLLATIONPROPERTY(name,'CodePage')= 1252按Code_Page排序
第四:在BCP命令中仅使用-C 1252(删除-c和-w)
希望对您有帮助