Postgresql 为每行运行存储函数,然后导出到CSV文件

Postgresql 为每行运行存储函数,然后导出到CSV文件,postgresql,Postgresql,我有一个users表,还有一个存储函数get\u user\u points(int user\u id):int。 如何为用户表中的每一行调用此过程,然后比较返回值(点数),如果大于100,如果为true,则添加用户id以导出到.csv文件中(如果不大于100,则忽略行)?可能我遗漏了一些内容,但以下内容应满足您的要求: select user_id from users where get_user_points(user_id) > 100 将其导出为.csv文件的过程取决于您使

我有一个
users
表,还有一个存储函数
get\u user\u points(int user\u id):int

如何为用户表中的每一行调用此过程,然后比较返回值(点数),如果大于100,如果为true,则添加用户id以导出到
.csv
文件中(如果不大于100,则忽略行)?

可能我遗漏了一些内容,但以下内容应满足您的要求:

select user_id
from users 
where get_user_points(user_id) > 100

将其导出为.csv文件的过程取决于您使用的SQL客户端。在
psql
中,您可以使用
\copy

例如,可能我遗漏了一些内容,但以下内容应满足您的要求:

select user_id
from users 
where get_user_points(user_id) > 100

将其导出为.csv文件的过程取决于您使用的SQL客户端。在
psql
中,您可以使用
\copy
在WHERE子句中使用您的函数,并将查询放入copy中

COPY (
  SELECT * 
  FROM user_table WHERE get_user_points(int user_id) > 100
) TO '/path/to/file.csv'
  • 请记住,该文件将在数据库服务器中创建。如果客户端和服务器在不同的机器上,您必须坚持使用@a_horse_提供的选项,或者使用@u no_名称

在WHERE子句中使用函数,并将查询放入副本中

COPY (
  SELECT * 
  FROM user_table WHERE get_user_points(int user_id) > 100
) TO '/path/to/file.csv'
  • 请记住,该文件将在数据库服务器中创建。如果客户端和服务器在不同的机器上,您必须坚持使用@a_horse_提供的选项,或者使用@u no_名称