bcp - BCP -w 复制 0 行而没有错误消息
问题描述
我正在尝试摄取以下包含内容的 .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 一个 .txt 文件吗?
=========================== 关于Pa1的建议,我在我的sql server中得到如下:
与他的帖子略有不同,可能是因为sql版本?
我的 Sql 服务器版本:
微软 SQL Server 2016 (SP2) (X64)
===========
补充:Pa1 的解决方案有效。取决于文件的编码方式。
解决方案
这似乎类似于BCP 的字符编码问题和
-w
需要基于 bcp 文档的制表符分隔数据。所以用标签替换管道并尝试?要确保正确插入文本,请尝试在 bcp 命令中指定代码页
-C { ACP | OEM | RAW | code_page }
- 如果您使用该
-C code_page
选项,则需要将 code_page 与您尝试摄取的文件的编码相匹配。完整列表可在此处获得
这是我系统上的试用版:
- 对于 ANSI 文本
bcp stage.bcp_test in "test.txt" -S dbservername -c -C ACP -t "|" -T -F 1 -b 20000 -m 1 -e error.txt
- 对于 UTF-8 编码的文本
bcp stage.bcp_test in "test.txt" -S dbservername -c -C 65001 -t "|" -T -F 1 -b 20000 -m 1 -e error.txt
- 使用 -w(将文本更改为制表符)
bcp stage.bcp_test in "test.txt" -S dbservername -w -T -F 1 -b 20000 -m 1 -e error.txt
推荐阅读
- java - Int 值的用户输入的冒泡排序数组
- python - 使用python构建拓扑时映射错误
- python - 需要重复Flask表单,一个表单类的多个实例
- jquery - 如何隐藏和预设标签jquery css
- unix - 将大文件拆分为具有一定数量记录的较小文件(awk,unix)
- php - php从嵌套的多维数组中删除重复项
- ios - [React Native][IOS] 应用被通知打开时如何捕捉事件
- python - Python unittest AssertionError
> != - php - 更新 PHP7 后的 Opcache 不显示在 phpinfo 中
- google-analytics - 为什么传递给 Google Analytics 的用户 ID 值未在 GA 中显示?