2017-05-16 30 views
1

我有一個多行SQL代碼,我想將具有多行的單列存儲到變量中。有人可以幫助我嗎? 我是新來的批次和學習,但這是我發現困難。如何使用windows批處理將postgresql查詢輸出循環到變量中

繼承人什麼批量我的SQL查詢樣子:

SQL查詢: 選擇電子郵件,從表1,表2名 ,表3 其中table1.id = table2.id 和table1.id =表3。 id and table1.somefilter and table2.somefilter; 我將相同的輸出存儲到一個文件夾中,該文件夾下面標記爲「C:\ filelocation」

psql -d數據庫-p 8000 -U用戶名-t -A -f C:\ filelocation -o「 C:\的text.txt」

輸出: [email protected] ABC [email protected] XYZ

所以這是電子郵件地址和它們相關的用戶名的列表。所以,我想把它們放在一個變量中。

我使用的是-f,因爲它是一個多行SQL查詢與2個不同的列和多行。

我已經設法將查詢的輸出到一個文件夾,但我真正想要的是我想循環他們到一個變量。

感謝

+0

請發表在輸出是怎樣一個例子,什麼是信息你想檢索,所以我們可以幫助你。我們沒有一個水晶球來猜測你想要達到的目標! – elzooilogico

+0

嘿elzooilogico,我希望這可以幫助。我很抱歉沒有提供所有必要的細節。謝謝 – user7933836

回答

1

我想輸出應該是

[email protected] abc 
[email protected] 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=,"

+0

感謝您的解決方案!乾杯!! – user7933836

相關問題