我有一个CSV文件,其中有大约400万行干净的数据,我需要将它导入SQL Server 2008 R2数据库。C#SqlCommand插入空值
我试图通过仅TSQL,SSIS和其他几个方法来做到这一点,但最终我总是遇到同样的问题,每行都有2000多列。 SQL服务器在读取CSV文件中的许多列时遇到问题。
因此,我最终编写了一个小小的C#控制台程序来解析csv文件并完成所有工作,将2000多列分解到我的数据库中的关系表中。一切都很好,但有了400万行的CSV文件,效率是关键。
所有这一切说,这里是我遇到的问题,不能为我的生活弄清楚。我正在使用旧的SqlCommand类来执行批量插入。我无法弄清楚如何获得空值到数据库。例如,采取这一行
var PreparedCommand = "insert into person_modeling_info (person_id, modeling_info, response) values ";
PreparedCommand += "(" + info[0] + ",'" + info[1] + "'," + (item2.Value == "" ? "'NULL'" : "'"+item2.Value+"'") + "),";
我不担心SQL注入,因为我100%确定数据是干净的。我知道我可以使用参数插入null,但参数比较慢,因为我必须一次插入一条记录,而不是使用大容量插入,如 insert into table (values), (values), (values)
当我使用串联执行插入时,它会插入数据库作为一个空字符串。
如果任何人有想法,任何帮助将不胜感激。
_I我不担心SQL注入_你应该是我的朋友,你应该.. –
为什么,它将数据从一个系统移到另一个系统。 – mituw16
不带引号的'NULL'应该做。当然,注射问题仍然如此。 – Abhitalks