我想导入一个CSV文件到SQL Server 2008 R2数据库表使用bcp使用像这样的命令:
bcp Database..TableName in TableName.csv -n -T -E -S localhost
我的问题:表中包含一个也在csv文件中的行(创build数据库时插入的默认行)。
我可以以某种方式指示bcp忽略这一行吗? 我试着用最大错误计数-m,但是bcp在命中已经存在的logging(主键)时仍然中止。
我不能只删除这个logging,因为它包含了稍后需要的安装依赖信息。
bcp没有很多复杂的error handling这样的情况。
我认为你的select是:
从你的csv中删除一个重复的行。
写一个DTS / SSIS包,将允许更复杂的error handling。
bcp放到一个临时表中,并使用t-sql从临时插入到live,使用一个左连接来检查该行是否存在。 就像是:
insert into TableName (column1, column2, ...) select t1.column1, t1.column2, ... from TempTableName t1 left join TableName t2 on t1.primarykey = t2.primarykey where t2.primarykey is null /* row does not already exist */