【发布时间】:2020-03-06 20:15:19
【问题描述】:
我有一个带有特殊字符的文本文件
#ID^&^DESCRIPTION^&^DATEINS
1^&^This is a test rec^&^12/23/2019 11:31:48
2^&^A Unique identification number (IČO) ^&^10/21/2019 07:36:48
4^&^Test 3 row known as ÖNACE 2020^&^11/02/2009 07:36:48
这是我创建的表
CREATE TABLE [dbo].[TESTtbl](
[id] [int] NOT NULL,
[desc] [nvarchar](MAX) collate Latin1_General_CI_AS,
[DATEINS] [datetime] NULL,
)
ON [PRIMARY]
我在下面构建了格式文件
10.0
3
1 SQLCHAR 0 12 "^&^" 1 cd_val_id ""
2 SQLNCHAR 0 0 "^&^" 2 bus_desc SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 24 "\r\n" 3 DateIns ""
我没有在表格中看到“bus_desc”列的正确字符。我该如何解决这个问题?
这是我使用的 bcp 命令
bcp.exe DBNAME.[dbo].[TESTtbl] in "c:\temp\some.txt" -T -f "c:\temp\formatfile.fmt" -C -S"SERVERNAME\INSTANCENAME" -F2 -t "^&^" -e "c:\temp\err.txt" -o "c:\temp\bcpout.txt"
【问题讨论】:
-
您还应该包含用于加载数据的 bcp 命令。
-
您在 bcp 文件 ("bus_desc") 中定义的第二个字段设置为进入只有 24 个字节的第 3 列。您也应该丢失 DATEINS 数据。格式文件的最后一列应该是 1、2、3... 而不是 1、3、11。当您告诉 BCP 将输入数据的第 3 列放入表的第 11 字段时,我很惊讶 BCP 没有失败。没有字段 11,对吧?
-
@jamie,我更正了格式文件并添加了 bcp 命令
-
您的 bcp 命令没有使用 -f 选项? -f 选项用于指定格式文件的位置。现在不是将其添加为答案,您能否确认该 bcp 命令确实是您使用的命令,并确认您是否真的打算使用格式文件?我认为您只是在滥用 bcp 命令。
-
哎呀,我试过“-c without format file”和“-f formatfile”。两者都没有工作。我更新了 bcp 命令
标签: sql-server bcp