2017-09-18 21 views
0

这是SQL命令我执行:在创建新的数据库之后,c#中的批量插入工作。失败后。始终工作在控制台

DECLARE @SQLString nvarchar(4000); 
SET @SQLString = N'BULK INSERT events FROM '+ QUOTENAME(@p0) +' WITH (FIELDTERMINATOR = ''|'', ROWTERMINATOR =''\n'')' 
EXECUTE sp_executesql @SQLString 

参数@ P0为路径csv文件,并加有command.parameters.AddWithValue

这当我删除该数据库工作正常让我的程序从头开始创建它,然后让它写入它。

当我关闭并重新打开我的应用程序,并使用目前存在分贝但是它失败。

错误是:

{“批量负载数据转换错误用于行1,列4(时间戳)(类型不匹配或无效字符 为指定的代码页)\ r \ nBulk 负载数据转换误差为行2(类型不匹配或无效字符为 指定代码页),第4栏(时间戳)。\ r \ nBulk负载数据 转换错误(类型不匹配或对于指定的 代码页无效字符)为3行,列4(时间戳)。\ r \ nBulk加载数据 转换错误(指定的类型不匹配或无效字符 代码页)为4行,列4(时间戳)。\ r \ nBulk负载数据 转换错误(类型不匹配或对于指定的 代码页无效字符)5行,列4(时间戳)。\ r \ nBulk负载数据 第6行第4列(时间戳)的转换错误(类型不匹配或指定的 代码页的无效字符)。\ r \ n第7行的转储错误(类型不匹配或指定的 代码页的类型不匹配或无效字符)第4列(时间戳)。\ r \ n对于第8行第4列(时间戳),转换错误(对于指定的 代码页,类型不匹配或字符无效)为 转换错误。\ r \ n跳转载入数据 转换错误(类型不匹配或指定的无效字符10代码页)用于行9,第4列(时间戳)。\ r \ nBulk负载数据 转换错误(类型不匹配或对于指定的 代码页无效字符),用于行10,列4(时间戳)。\ r \ nBulk负载数据 转换错误(类型不匹配或无效字符为指定 代码页)用于行11,列4(时间戳)。\ r \ n无法批量加载 ,因为已超过错误的最大数目(10)。\ r \ n该OLE DB provider \“BULK \”链接服务器\“(null)\”报告了一个错误。该 提供程序未给出有关错误的任何信息。\ r \ n无法获取 从OLE DB提供程序\ “BULK \” 为链接服务器\ “(空)\”。“}

当我行使用完全相同的sql命令通过查询在sql控制台,它的工作原理完美无缺

奇怪的是(时间戳)不是列4.它实际上是csv中的第一列。与控制台一起工作,但仅在C#中有时(与新的数据库)?

+0

标签您正在使用的数据库管理系统。 (该代码是特定于产品的。) – jarlh

+0

你的连接字符串是什么样子/你如何告诉代码使用哪个数据库(目录)(也就是说你连接到正确的服务器/实例,但没有看到正确的目录)。 (您可能会看到您看到的错误的原因可能是以前的尝试在不同的目录/不同的排序规则下创建了具有相同详细信息的表格)。 – JohnLBevan

+0

当我看到字符“_Timestamp_”或类似的日期事件时,在SQL数据错误消息中,我会猜测你在数据,应用程序和/或数据库之间的时间/语言格式有问题。 –

回答

1

感谢@JohnBevan

实际上,当我创建数据库时,我也更改了目录。然而,当我使用的现有版本,我没有叫ChangeDatabase ...

+0

(谢谢@mjwills;我很高兴@Thypari能够接受这些观点;只是很高兴提供帮助;尽管我很欣赏这个想法) – JohnLBevan