提问人:aardwolf 提问时间:11/7/2023 更新时间:11/7/2023 访问量:40
如何使用 PgAdmin 将查询结果保存到文件中到终端
How to save query result to file using PgAdmin to terminal
问:
有没有办法在pgAdmin中编写一个脚本,将许多查询的结果保存到csv文件中? 就像查询 1 保存到 1 .csv 的结果一样,查询 2 到 2。CSV 等 我可以通过逐个运行查询并单击“另存为”来手动完成,但是如何在脚本中执行此操作?
我希望有许多包含查询结果的 csv 文件,但无需手动逐个单击,而是使用 PgAdmin 中的脚本。
答:
0赞
Pepe N O
11/7/2023
#1
您可以使用 COPY 命令完成此操作,如下所示:
COPY test TO '/home/someuser/results/test.csv' WITH (FORMAT CSV, HEADER);
将测试表的所有内容转换为 CSV 文件或查询
COPY (SELECT * FROM test WHERE id >1) TO '/home/someuser/results/test.csv'
WITH (FORMAT CSV, HEADER);
该文件必须可由 PostgreSQL 用户(用户 ID 服务器运行方式),并且必须从 服务器。
这意味着 postgres 用户(运行 postgreSQL 进程的用户)必须对存储结果的文件夹具有写入权限,并且该文件夹或路径驻留在服务器端,该文件夹或路径适用于任何数据库管理器,而不仅仅是 pgAdmin。有关更多信息,请查看 COPY 的官方文档。
要执行 COPY 命令,用户需要授予角色,但是,这是必要的,请考虑以下事项:pg_write_server_files
pg_read_server_files、pg_write_server_files和 pg_execute_server_program角色旨在允许管理员 具有能够访问的受信任但非超级用户的角色 文件并以数据库用户身份在数据库服务器上运行程序 运行方式。由于这些角色能够访问服务器文件上的任何文件 系统,它们在以下情况下绕过所有数据库级权限检查 直接访问文件,它们可用于获得 超级用户级别的访问,因此在以下情况下应格外小心 将这些角色授予用户。
评论
\pset format csv