Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用windows批处理将postgresql查询的输出循环到变量中_Postgresql_Batch File_Batch Processing - Fatal编程技术网

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

如何使用windows批处理将postgresql查询的输出循环到变量中,postgresql,batch-file,batch-processing,Postgresql,Batch File,Batch Processing,我有一个多行SQL代码,我想将一列多行存储到一个变量中。有人能帮我吗? 我对批处理和学习是新手,但这是我发现的困难 以下是我的SQl批查询的外观: SQl查询: 选择电子邮件、用户名 来自表1、表2、表3 其中table1.id=table2.id 表1.id=表3.id 和表1.1 和表2.1; 我将其输出存储到一个文件夹中,该文件夹在下面表示为“C:\filelocation” psql-d数据库-p8000-U用户名-t-A-f C:\filelocation-o“C:\text.txt”

我有一个多行SQL代码,我想将一列多行存储到一个变量中。有人能帮我吗? 我对批处理和学习是新手,但这是我发现的困难

以下是我的SQl批查询的外观:

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

psql-d数据库-p8000-U用户名-t-A-f C:\filelocation-o“C:\text.txt”

输出: abc@abc.comabc xyz@abc.comxyz

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

我使用-f,因为它是一个多行sql查询,有两个不同的列和多行

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


谢谢

我想输出应该是

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=“
”tokens=1,2 delims=,“

请发布一个关于输出方式的示例,以及您想要检索的信息,以便我们可以帮助您。我们没有一个水晶球来猜测你到底想要实现什么!嘿,elzooilogico,我希望这有帮助。我很抱歉没有提供所需的所有细节。感谢您提供的解决方案!!干杯