在循环中打印 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
我有一个逗号分隔的 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