将多个文件导入表中

时间:2011-01-05 19:22:40

标签: sql-server powershell import

我有一个充满文件的目录。它们是SQL脚本,但我不想运行它们。我想将脚本文件的内容导入到我的数据库中的一个表中,以便稍后运行。每个文件在表中都有自己的行。

我目前正在与Powershell合作,但如果还有另一种不使用第三方软件的简单方法,那么我也会对此持开放态度。

最初我开始编写循环文件的代码,使用StreamReader获取内容,然后构建一个insert语句来执行。我意识到文件中的嵌入式引号可能存在​​很大的问题。

感谢您提出任何建议!

2 个答案:

答案 0 :(得分:2)

是否可以删除嵌入的引号并将其标记为要替换的逻辑部分 您的逻辑中是String.Replace(old_str,new_str)还是tsql REPLACE?下面的示例显示 <condition_string>标记,因此您知道您已经特别注意它。

declare @finalQuery nvarchar(1000)

SET @finalQuery = 
(SELECT REPLACE ((
   SELECT REPLACE ((
      SELECT  REPLACE('Select <column_names> from <table_name> where 
                              <condition_string>' COLLATE Latin1_General_BIN,
      '<column_names>', 
      'ID,[name]' )),
   '<table_name>',
   '[MyTable]')),

'<condition_string>',
'[name] like ''%John%'''));

EXEC(@finalQuery);

GO

答案 1 :(得分:0)

通常,当您处理数据库中的文件时,您要么引用它们而不是导入完整内容(因此您只需要在物理卷上存储文件的路径),或者将它们存储为BLOB(二进制大对象)。如果做后者,你也可以拉链。

这些技术的缺点是您不能只使用SQL查询搜索它们,但是您没有说这对您来说是否是一个问题?