如何通过 SQL Workbench 将 Amazon Redshift 输出保存到本地 CSV?
Posted
技术标签:
【中文标题】如何通过 SQL Workbench 将 Amazon Redshift 输出保存到本地 CSV?【英文标题】:How to save Amazon Redshift output to local CSV through SQL Workbench? 【发布时间】:2017-10-22 14:51:30 【问题描述】:我正在通过 Amazon Redshift 编写 psql,现在我正在尝试在 SQL Workbench 上通过 PSQL 查询将输出保存为 CSV
我打算通过查询而不是使用select
子句然后右键单击将输出保存为csv的原因是因为有大量数据,我发现如果我将输出生成到临时表中,它比使用select
显示所有输出要快得多。因此,我在想是否保存到本地 CSV 也可以更快。
我尝试了***解决方案here,但是它在 Amazon Redshift 上不起作用,当我使用Copy (SELECT col1, col2 FROM my_table) TO '[my local csv path]' WITH CSV DELIMITER ',';
或尝试\Copy
时,它一直显示给我
亚马逊无效操作:“(”或附近的语法错误
或
亚马逊无效操作:“\”处或附近的语法错误
然后我检查了Amazon Redshift query tutorial,没有找到任何可以将输出保存到本地 CSV 的子句。貌似COPY
是从Amazon数据源复制数据到Redshift,UNLOAD
是保存数据到s3,但我只是想把数据保存在本地机器上。
那么,有什么方法可以将 Redshift 输出 保存到我的本地 CSV 但使用 SQL Workbench?
【问题讨论】:
【参考方案1】:有,试试这个。
PGPASSWORD=<password> psql -h <host> -d <db> -U <user> -p 5439-a -c "select * from <table>" -F '<delimiter>' -o temp.csv
【讨论】:
非常感谢!我的数据是临时表,我正在使用 SQL WorkBench。所以在这种情况下使用终端可能不起作用。刚刚补充说我在问题中使用SQL WorkBench
。有什么方法可以通过 SQL WorkBench 编写 psql 查询并将输出保存到本地 CSV?
我不是工具使用方面的专家,但我发现一旦您在工作台中设置了结果,您可以使用菜单选项数据 -> 将数据另存为 -> 保存数据?,顺便说一句,redshift 没有支持所有postgres方式的加载和卸载
我不能通过工作台使用“另存为”是因为select
子句可以在那里永远运行,但保存到文件可以更快......这就是我要求任何可用的查询〜无论如何,谢谢您的帮助!【参考方案2】:
尝试在工作台中运行以下任何一项
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;
【讨论】:
我对您的解决方案做了一些小改动,最后它对我有用。你能在-dateFormat='yyyy-MM-dd'
后面加上;
吗?否则它将无法正常工作。非常感谢!
我使用了您提供的第一个解决方案,但收到以下错误:“错误 [42601] [Amazon][Amazon Redshift] (30) 尝试执行查询时出错:[SQLState 42601]错误:“WbExport”第 1 行或附近的语法错误:WbExport -type=text ^”。有什么见解吗?谢谢!
@CathyQian 能不能把它放在一行里看看错误信息有没有改善 rr 如果你能发布你的简写查询,【参考方案3】:
我知道您的问题是关于 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
【讨论】:
以上是关于如何通过 SQL Workbench 将 Amazon Redshift 输出保存到本地 CSV?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Workbench 迁移向导通过 ssh 将 MS SQL Server 数据库迁移到 MySQL
如何在 MySQL Workbench 中执行多个 SQL 查询?
如何在我的 redshift / SQL Workbench 连接中找到 AUTOCOMMIT 的当前值?