使用脚本工具自动创建sql语句

时间:2011-10-17 17:46:44

标签: windows powershell cmd

我经常有一个像这样的任务:将大量用户插入到具有类似属性的users表中。并非总是如此简单,但一般来说,字符串列表 - >相应的sql语句列表。

我通常的解决方案就是使用excel中的用户名列表,使用公式来生成插入语句的加载

=concatenate("insert into users values(username .......'",A1,"'.....

然后我填写公式以获取所有插入行。

这有效,但有时声明很长,有时包括几个不同的步骤,并将其全部塞进一个excel公式,并使所有的包装引用正确是一个痛苦。

我想知道是否有更好的方法。我真正想要的是能够拥有模板文件模板txt:

insert into users
  ([username],
          [company] ...



          )
   values('<template tag1>...

然后使用一些魔术命令行工具,只需输入类似

的内容
command_line> make_big_file_using_template template.txt /values [username1 username2] 
/output: bigfile.txt

这给了我一个大文件,其中为每个用户名值重复了模板,并将标签替换为用户名。

这样的命令是否存在,或者我对命令行工具的期望是否过高?任何免费的Windows工具都可以。我可以在不太多的时间内完成一个c#程序,但我觉得必须有一个易于使用的工具。

1 个答案:

答案 0 :(得分:1)

使用Powershell脚本这很简单。 PS允许字符串中的内联变量,因此您可以执行以下操作:

$Tag1 = 'blah'
$Tag2 = 'foo'

$SQLHS = @"
INSERT INTO users
([username],
 [company],...)
VALUES
('$tag1', '$tag2'...)
"@

set-content 'C:\Mynewfile.txt' -value $SQLHS

@"...."@here-string,这使得编写可读代码非常容易,而无需转义引号等。

上面的内容可以很容易地修改为接受各种标签的参数和输出文件的另一个参数,或者运行另一个.txt或.csv文件中的一组值作为输入。

修改

要修改它以接受参数,您只需在顶部添加param()块:

param($outfile, $tab1, $tab2, $tab3)

然后在脚本中使用这些$变量:

set-content "$outfile" -value $SQLHS