如何通过 SQL Workbench 将 Amazon Redshift 输出保存到本地 CSV?

How to save Amazon Redshift output to local CSV through SQL Workbench?

我正在通过 Amazon Redshift 编写 psql,现在我正尝试通过 PSQL 查询将输出保存为 CSV,在 SQL Workbench 我计划通过查询而不是使用 select 子句然后右键单击将输出保存为 csv 来执行此操作的原因是因为有大量数据,我发现如果我将输出生成到临时文件中table,它比使用select显示所有输出要快得多。因此,我在想保存到本地CSV是否也可以更快。

我已经尝试了最佳解决方案 here,但是,它在 Amazon Redshift 上不起作用,当我使用 Copy (SELECT col1, col2 FROM my_table) TO '[my local csv path]' WITH CSV DELIMITER ','; 或尝试 \Copy 时,它一直向我显示

Amazon Invalid operation: syntax error at or near "("

Amazon Invalid operation: syntax error at or near "\"

然后我检查了Amazon Redshift query tutorial,没有找到任何可以将输出保存到本地CSV 的子句。好像COPY是从Amazon数据源拷贝数据到Redshift,UNLOAD是把数据存到s3,但是我只想把数据存到我的本地机器上。

那么,有什么方法可以将 Redshift 输出 保存到我的 local CSV 但 SQL Workbench?

是的,试试这个。

PGPASSWORD=<password> psql -h <host> -d <db> -U <user> -p 5439-a -c "select * from <table>" -F '<delimiter>' -o temp.csv

在 Workbench

中尝试 运行 以下任何一项
WbExport -type=text
         -file='C:\Downloads\myData.txt'
         -delimiter='\t'
         -decimal=','
         -dateFormat='yyyy-MM-dd';
select a, b ,c from myTable;

WbExport -type=text
     -file='C:\Downloads\myQuery.txt'
     -delimiter='\t'
     -header=true
     -tableWhere="WHERE a is not null and date between 11/11/11 and 22/22/22"
     -sourcetable=mytable;

我知道你的问题是关于 Workbench 但如果你愿意在 linux 上使用命令行可能这是一个解决方案,它对我们来说效果很好

#!/bin/zsh 
#we are assuming you are not appending to each file and you don't need header
out_put='/tmp/output.csv'
#be very careful here rm -rf is very dangerous 
rm -rf $out_put

PGPASSWORD='YOUR_PASSWORD' psql -h YOUR_STUFF-cluster-1.YOUR_STUFF.us-east-1.redshift.amazonaws.com -p YOUR_PORT_NUMBER -d YOUR_DATABASE -U YOUR_USER_NAME -A -t -c "select * from SOME_TABLE limit 10" -F ',' -o $out_put


echo "your file is ready" $out_put