南禅 发表于 2023-9-13 14:28:59

BCP不返回任何错误,但不复制任何行

我正在尝试将军.csv大量数据转储到文件中SQL Server 2012年数据库。我没有做几千次。INSERT相反,它正在进行调查bcp。
编辑:    这是一个自动化的过程,而不是一次性的。BULK INSERT该数据库的权限。
当我试图将数据复制到数据库中时,bcp它不会返回任何错误,但它不会复制任何内容-它只会回到0 rowscopied。我把它减少到不能正常工作的最小情况。
首先,创建一个包含两列的简单表:
CREATE TABLE .(    (36) NOT NULL,    NOT NULL    PRIMARY KEY CLUSTERED    ASC    )   WITH (PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON,FILLFACTOR = 40) ON ) ON GO然后,使用bcp从中创建格式文件。请注意,这个例子创建了一个XML格式文件,但对它来说是XML还是这台机器没关系。
bcp MyDB.dbo.mincase format nul -T -n -f mincasexml.fmt -x -S .\SQLEXPRESS现在创建一个data.csv该文件包括一行和两个条目,用制表符分隔。对我来说,这份文件只是:
somecharacters12345同样,这是一个制表符,而不是两个空间。是否有尾随换行符似乎并不重要。
现在,尝试bcp将数据插入到该格式文件中:
bcp MyDB.dbo.mincase in data.csv -f mincasexml.fmt -T -S .\SQLEXPRESS我得到的不是把数据复制到数据库中:
Starting copy...0 rows copied.Network packet size (bytes): 4096Clock Time (ms.) Total   1有人知道这是怎么回事吗?
谢谢!
                                                               
    解决方案:                                                               
                                                                该 BCP    命令通常需要指定标志符BCP文件格式模式。
-c指定字符(纯文本)模式
-n指定纯模式
-w指定unicode模式在你的测试案例中,你创建的文件是纯文本文件,所以你应该在命令中bcp    中指定 -c” 。
bcp MyDB.dbo.mincase in data.csv -c -T -S .\SQLEXPRESSMicrosoft建议使用导入和导出
-n为避免列值中出现字段分隔符的问题(请参考字符模式和纯模式的最佳实践)。
页: [1]
查看完整版本: BCP不返回任何错误,但不复制任何行