【问题标题】:PostgreSQL Export COMPOUND Query Output to CSVPostgreSQL 导出 COMPOUND 查询输出到 CSV
【发布时间】:2020-08-03 12:42:26
【问题描述】:

我有一个功能齐全的复合 PostgreSQL 查询...

SELECT * FROM 
(SELECT date_trunc('day', date) date, (array_agg(open ORDER BY time 
ASC))[1] o, MAX(high) h, MIN(low) l, (array_agg(close ORDER BY time 
DESC))[1] c
FROM 
(SELECT * FROM ES_test WHERE time BETWEEN 
(SELECT pit_open FROM "contracts" WHERE root_symbol = '@ES' LIMIT 1) 
AND 
(SELECT pit_close FROM "contracts" WHERE root_symbol = '@ES' LIMIT 1)) 
AS pit
GROUP BY date_trunc('day', date) ORDER BY date) AS pit_daily INNER 
JOIN trading_dates ON pit_daily.date = trading_dates.date;

我想将此查询的输出导出到 csv。我试过COPY方法...

Copy (Select * From foo) To '/tmp/test.csv' With CSV DELIMITER ',';

还有 \copy 方法...

\copy (SELECT * FROM persons) to 'C:\tmp\persons_client.csv' with 
csv

没有任何成功。当我尝试这些时,我会遇到多个错误,包括解析错误或在查询中的“AS”之一之后或在引用创建 csv 文件的位置的“TO”之后纠缠不清。当我尝试创建临时表或临时视图时,我遇到了类似的错误。有什么建议?这是版本...
'psql (PostgreSQL) 12.2 (Ubuntu 12.2-2.pgdg18.04+1)'

【问题讨论】:

  • 我还尝试了多种方法为整个查询赋予别名。也许有允许的最大别名数?
  • 为我工作。请向我们展示您实际尝试过的一件事以及您遇到的错误。请正确格式化(例如,缩进 4 个空格),这样我们就不必尝试猜测哪些引号是命令的一部分,而哪些引号是格式的一部分。
  • 感谢您的回复 jjane。你能展示一下你用来完成这项工作的代码吗?
  • COPY (SELECT * FROM ([ CODE FROM ABOVE ]) TO '/home/alpha/Desktop/ES_System_data.csv' CSV 标头;错误:“'”第 7 行或附近的语法错误:。 .._dates ON pit_daily.date = trading_dates.date) TO '/home/alp...

标签: postgresql csv ubuntu export output


【解决方案1】:

根据错误消息和评论,您的文件名之前似乎有一个所谓的“智能”引号,或者可能是反引号/坟墓。您需要它是一个直的 ASCII 撇号/单引号。

无论您使用什么来编辑查询,似乎都太聪明了一半。但它似乎也会把你的其他引号弄乱,而不仅仅是这些。

【讨论】:

  • 谢谢 jjanes。事实上,文本编辑创建了一个不可读的引号。我在另一个编辑器上编辑了该语句并得到了我想要的结果。
猜你喜欢
  • 2015-05-25
  • 2015-02-01
  • 1970-01-01
  • 2018-09-11
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
相关资源
最近更新 更多