我正在使用bcp utility导入制表符分隔的文件。我的表有一个标识列,当我运行bcp命令时,我收到错误消息
错误= [Microsoft] [SQL Server Native Client 11.0]无效的日期格式
第二列是日期时间。当我使用-E
标志(很多人建议)时,出现错误
错误= [Microsoft] [SQL Server Native Client 11.0]强制转换规范的字符值
当我没有标识列时,一切正常。我不确定这里缺少什么。
这是一个副本:
CREATE TABLE [dbo].[test_temptable]
(
[ID] int NOT NULL IDENTITY PRIMARY KEY,
[Date] [datetime] NULL,
[Column2] [varchar](100) NULL,
[Column3] [varchar](100) NULL,
)
ON [PRIMARY]
GO
测试数据(testTempTable.txt-制表符分隔):
15-Sep-18 TestColumn2 TestColumn3
BCP命令。
bcp "testDB.dbo.test_temptable" in "c:\temp\test\testTempTable.txt" -c -t"\t" -T -S "testSQlServer" -E -e c:\temp\test\error.csv
当我从表中删除[ID]
列并运行时,一切正常。
我在做什么错?
编辑: 表没有标识列时分配的值
有用的链接:
答案 0 :(得分:3)
问题是您试图将第一列(即日期)添加到INT列中。
您有三个选择...
将INT列作为第一行添加到源数据,并使其增加,就像IDENTITY将增加一样,并继续传递-E选项。这样做可以将源中的数据用作IDENTITY列。
向源数据的第一列添加一个随机INT,每行说1,然后请勿传递-E。根据文档,如果未提供-E,它将忽略身份列的值,并从当前的种子值开始并自动递增。
利用格式文件来指定数据文件中的哪些列进入SQL表中的哪些列。
How to specify the format file
How to construct a format file
祝你好运!