我试图用内容摄取以下.txt文件
2|Jürgen
3|Jürgen
4|Jürgen
由|
划定。第二列是重音字母,因为我想测试sql表保留重音字母。
要摄取的sql表定义为
CREATE TABLE [stage].[bcp_test](
[ID] [int] NOT NULL,
[TERM] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL)
如果我做一个简单的插入,insert into stage.bcp_test values(1,'Jürgen')
我可以看到表中保留的重音Jürgen。
但是当我尝试通过bcp在示例文件中插入3行时
bcp stage.bcp_test in "test.txt" -S dbservername -c -t "|" -T -F 1 -b 20000 -m 1 -e error.txt
Jürgen成为J├╝rgen。
基于一些建议,我将-c更改为-t。所以新的bcp命令就变成了
bcp stage.bcp_test in "test.txt" -S dbservername -w -t "|" -T -F 1 -b 20000 -m 1 -e error.txt
有什么我错过的吗?我试图搜索不同的地方,但找不到解决方案。我可以使用bcp -w bcp a .txt文件吗?
===========================关于Pa1的建议,我在sql server中得到的内容如下:
与他的帖子略有不同,也许是因为sql版本?
我的Sql Server版本:
Microsoft SQL Server 2016(SP2)(X64)
===========
加上:Pa1的解决方案有效。取决于文件的编码方式。
这似乎与character encoding issue with the BCP and ó相似
-w
期望基于bcp文档的制表符分隔数据。那么用tab替换管道并尝试?-C { ACP | OEM | RAW | code_page }
-C code_page
选项,则需要将code_page与您尝试摄取的文件的编码相匹配。完整列表可用here这是我系统的试用版:
bcp stage.bcp_test in "test.txt" -S dbservername -c -C ACP -t "|" -T -F 1 -b 20000 -m 1 -e error.txt
Results before and after using ACP
bcp stage.bcp_test in "test.txt" -S dbservername -c -C 65001 -t "|" -T -F 1 -b 20000 -m 1 -e error.txt
bcp stage.bcp_test in "test.txt" -S dbservername -w -T -F 1 -b 20000 -m 1 -e error.txt