gpt4 book ai didi

postgresql - 将 WITH 子查询的输出复制到 postgres 中的 CSV

转载 作者:行者123 更新时间:2023-12-05 03:55:37 25 4
gpt4 key购买 nike

我正在尝试将以下“WITH”子查询的输出保存到 csv 文件中。

 WITH mer9 AS (
SELECT *,
substring(seq_window_mut_9mers, split9.start, 9)
FROM split9
),

mer23 AS (
SELECT *,
substring(seq_window_mut_23mers, split23.start, 23)
FROM split23
),

dataset AS (
SELECT *
FROM table
INNER JOIN mer9 ON mer9.seq_window_mut_9mers = table.seq_window_mut_9mers
INNER JOIN mer23 ON mer23.seq_window_mut_23mers = table.seq_window_mut_23mers

)

COPY (SELECT * FROM dataset) TO '/tmp/filename.csv' (format CSV);

运行查询后,出现错误:

[Code: 0, SQL State: 42601]  ERROR: syntax error at or near "COPY"
Position: 3566 [Script position: 3566 - 3570]

最佳答案

CTE 生成的结果集不能在不同的查询中访问。 CTE 创建一种仅存在于当前查询中的“临时表”。也就是说,将您的 CTE 放在 COPY 中声明,它应该可以工作,例如

COPY (
WITH mer9 AS (
SELECT *, substring(seq_window_mut_9mers, split9.start, 9)
FROM split9),
mer23 AS (
SELECT *, substring(seq_window_mut_23mers, split23.start, 23)
FROM split23),
dataset AS (
SELECT * FROM table
INNER JOIN mer9 ON mer9.seq_window_mut_9mers = table.seq_window_mut_9mers
INNER JOIN mer23 ON mer23.seq_window_mut_23mers = table.seq_window_mut_23mers
)
) TO '/tmp/filename.csv' (format CSV);

编辑。正如@a_horse_with_no_name 所指出的:

请记住,此命令将在服务器中创建一个文件。如果您希望在客户端创建一个包含输出的文件,请考虑在您的 COPY 命令中使用 STDOUT,例如使用 psql :

$ psql -d yourdb -h yourdbhost -U your_user -c "COPY (WITH..) TO STDOUT" > file.csv

另见 answer .

关于postgresql - 将 WITH 子查询的输出复制到 postgres 中的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60113519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com