Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql BCP以UTF-8编码文件导入的文件_Sql_Sql Server_Encoding_Utf 8_Bcp - Fatal编程技术网

Sql BCP以UTF-8编码文件导入的文件

Sql BCP以UTF-8编码文件导入的文件,sql,sql-server,encoding,utf-8,bcp,Sql,Sql Server,Encoding,Utf 8,Bcp,我在SQLServer2008中使用批量复制(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 '+@Pa

我在SQLServer2008中使用批量复制(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

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


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

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

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

  • Second:在internet上搜索与您找到的编码相关的页面代码,对于ISO-8859-1,代码为1252

  • 第三个:在sql server中执行以下sql请求,查看sql server是否支持此编码

    选择名称、排序规则属性(名称、“代码页”)作为代码页、说明 来自sys.fn_HelpCollations(),其中COLLATIONPROPERTY(名称,'CodePage')=1252按代码排序_页

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

我希望这是帮助

“-w”标志强制bcp以Unicode导出,在MS SQL中,Unicode是UTF-16,而不是UTF-8。
SELECT @sql = 'bcp "SELECT * FROM '+@DBName+'..ABC" queryout  '+@Path+'\'+'ABC'.csv -w -k     -t, -U sa -P abc -T -S ' + @@servername