【问题标题】:How to save Amazon Redshift output to local CSV through SQL Workbench?如何通过 SQL Workbench 将 Amazon Redshift 输出保存到本地 CSV?
【发布时间】: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?

【问题讨论】:

    标签: amazon-web-services amazon-redshift export-to-csv sql-workbench-j


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2021-05-22
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 2019-02-10
      • 2020-02-07
      • 2016-05-01
      • 1970-01-01
      • 2014-02-17
      相关资源
      最近更新 更多