如何使用Windows批处理将postgresql查询的输出循环到变量中

时间:2017-05-16 16:54:24

标签: postgresql batch-file batch-processing

我有一个多行SQL代码,我希望将一个包含多行的列存储到一个变量中。有人可以帮我这个吗? 我是批处理和学习的新手,但这是我遇到困难的事情。

下面是批处理的SQl查询:

SQl查询: 选择电子邮件,用户名 来自table1,table2,table3 table1.id = table2.id 和table1.id = table3.id 和table1.somefilter 和table2.somefilter; 我将其输出存储到一个文件夹中,该文件夹在下面表示为" C:\ filelocation"

psql -d Database -p 8000 -U username -t -A -f C:\ filelocation -o" C:\ text.txt"

输出: abc@abc.com abc xyz@abc.com xyz

这是一个电子邮件地址及其相关用户名列表。所以,我想把它们放在变量中。

我正在使用-f,因为它是一个包含2个不同列和多行的多行sql查询。

我已经设法将查询的输出放到一个文件夹中,但我真正想要的是我想将它们循环到变量中。

由于

1 个答案:

答案 0 :(得分:1)

我想输出应该是

Range.ListFormat.ListString

您只需按

中的方式解析输出文件
abc@abc.com abc 
xyz@abc.com xyz
...

或者,如果你想把它们变成变量

for /f "tokens=1,2 delims= " %%a in (C:\text.txt) do (
  echo(Email address is: %%a
  echo(Username is:      %%b
)

如果每一对都在一行中并且之间有空格,如果分隔符为逗号,只需将setlocal enabledelayedexpansion rem grab fields into variables set /a counter=0 for /f "tokens=1,2 delims= " %%a in (C:\text.txt) do ( set /a counter+=1 set "eMail_!counter!=%%a" set "uName_!counter!=%%b" ) rem process them for /L %%i in (1,1,!counter!) do ( rem whatever you wanna do echo(Email address is: !eMail_%%i! echo(Username is: !uName_%%i! ) Endlocal 更改为"tokens=1,2 delims= "