10

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

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

亚马逊无效操作:“(”处或附近的语法错误

或者

亚马逊无效操作:“\”处或附近的语法错误

然后我检查了Amazon Redshift 查询教程,没有找到任何可以将输出保存到本地 CSV 的子句。似乎COPY是从亚马逊数据源复制数据到Redshift,UNLOAD是将数据保存到s3,但我只想将数据保存在我的本地机器上。

那么,有没有办法将Redshift 输出保存到我​​的本地 CSV 但使用 SQL Workbench?

4

3 回答 3

10

是的,有,试试这个。

PGPASSWORD=<password> psql -h <host> -d <db> -U <user> -p 5439-a -c "select * from <table>" -F '<delimiter>' -o temp.csv
于 2017-05-23T12:55:53.767 回答
7

尝试在 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;
于 2018-02-05T16:48:25.713 回答
1

我知道您的问题是关于 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
于 2020-10-26T23:36:54.470 回答