在循环中打印 psql 查询的单个数据到 stoud

Print single data of a psql query inside a loop to stoud

我有一个逗号分隔的 csv 文件。简化后如下所示:

uuid,other_data # this one is not presented, just the data
uuid1,other_data1
uuid2,other_data2
...
uuidN,other_dataN

我在 bash 脚本中循环它,如下所示:

#!/bin/bash
while IFS=, read uuid other_data
do
    echo $uuid
done < 

现在我想在循环内使用 -c 选项执行 psql 查询,目前,只打印结果。但我需要 data,而不是完整的 psql 输出。即,以下内容:

#!/bin/bash
while IFS=, read uuid other_data
do
    psql -h <host> -p <port> -U <user> <database> -c "select some_column from some_table where uuid='$uuid'"
done < 

... 将导致如下结果:

  some_column  
---------------
 8410043071264
(1 row)

  some_column  
---------------
 8410069001030
(1 row)

如何只获取值? (8410043071264、8410069001030)。我是否能够将它加载到一个变量中以在循环中对其进行处理?这行不通,但您明白了:在循环内 some_column=$(psql -h <host> -p <port> -U <user> <database> -c "select some_column from some_table where uuid='$uuid'") 然后 echo $some_column

你能试试下面的 -t 选项吗;

psql -h <host> -p <port> -U <user> <database> -t -c "select some_column from some_table where uuid='$uuid'"

Tuples only (no header/footer): -t