如何在visual studio中从sql文件执行非常长的SQL语句

时间:2014-01-13 17:13:35

标签: c# asp.net sql visual-studio-2010

我必须从很长的csv文件更新我的数据库。我生成了很长的sql语句,我尝试直接在Visual Studio中执行它,但它出现了错误,因为Visual Studio无法进行这么长的查询。

SQL文件内容:

INSERT INTO [HotelFacilitySet]
VALUES ('SPA');

任何机构都可以解释如何从Visual Studio执行.sql文件。

感谢。

3 个答案:

答案 0 :(得分:1)

对于这么大的数据集,我建议使用bcp加载.sql文件。见http://technet.microsoft.com/en-us/library/aa337544.aspx

答案 1 :(得分:0)

根据CSV文件的实际内容以及需要发生的频率,有无数的解决方案。(我假设这只需要发生一次)。

  1. SSMS内置的导入数据向导
  2. 整合服务
  3. 一些小脚本
  4. 我个人首先会选择第一个选项并试试我的运气虽然我希望这不适用于大文件这样的大文件。

    接下来我会尝试第三个选项并编写一个c#脚本来读取文件并定期导入。

    它确实取决于CSV的实际内容

答案 2 :(得分:0)

我尝试使用SQL Server中的任何内置选项加载文件都没有运气。也许其他人也有,但自从2008年以来,我已经多次尝试过每个版本的SQL服务器,并且没有运气(SQL Server糟糕的原因之一)。

话虽如此,我对此的看法将是CSV文件中的流阅读器以及insert语句。这是我的伪代码:

//read file using FileStream and break into chunks of 250 items each (or maybe some other number depending on size of object)
//The key is that Chunkify needs to return an enumerable that reads the file as your code is executing.
var chunks = Chunkify(file);

foreach(var chunk in chunks)
{

var stmt = new StringBuilder("INSERT INTO [HotelFacilitySet] VALUES (");

//Each chunk is a set of items
foreach(item in chunk) {
  stmt.Append(item);
  stmt.Append("),(");
}
stmt.Append(")");    
ExecuteSql(stmt);

}