我有一个充满文件的目录。它们是SQL脚本,但我不想运行它们。我想将脚本文件的内容导入到我的数据库中的一个表中,以便稍后运行。每个文件在表中都有自己的行。
我目前正在与Powershell合作,但如果还有另一种不使用第三方软件的简单方法,那么我也会对此持开放态度。
最初我开始编写循环文件的代码,使用StreamReader获取内容,然后构建一个insert语句来执行。我意识到文件中的嵌入式引号可能存在很大的问题。
感谢您提出任何建议!
答案 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查询搜索它们,但是您没有说这对您来说是否是一个问题?