gpt4 book ai didi

amazon-redshift - 如何安全地卸载/复制 RedShift 中的表?

转载 作者:行者123 更新时间:2023-12-04 02:40:41 26 4
gpt4 key购买 nike

在RedShift中,用unload/copy把数据移到S3再加载回redshift很方便,但是感觉每次都很难选择分隔符。正确的分隔符与表格的内容相关!每次遇到加载错误时,我都必须更改分隔符。

例如,当我使用以下命令卸载/复制表时:

unload ('select * from tbl_example') to 's3://s3bucket/tbl_example' CREDENTIALS 'aws_access_key_id=xxx;aws_secret_access_key=xxx' delimiter '|' addquotes allowoverwrite;

copy tbl_example2 from 's3://s3bucket/tbl_example' CREDENTIALS 'aws_access_key_id=xxx;aws_secret_access_key=xxx' delimiter '|' removequotes;

如果表碰巧有一个内容为 "||" 的字段,我将收到加载错误。 .然后我必须更改分隔符“|”到另一个像“,”,然后再试一次,如果我不走运,也许需要多次尝试才能成功。

我想知道是否有办法卸载/复制与表内容无关的 Redshift 表,无论表中存储什么奇怪的字符串,它总是会成功。

最佳答案

最后我想出了正确的方法,添加 逃脱在卸载和复制命令中:

unload ('select * from tbl_example') to 's3://s3bucket/tbl_example' CREDENTIALS 'aws_access_key_id=xxx;aws_secret_access_key=xxx' delimiter '|' addquotes escape allowoverwrite;

copy tbl_example2 from 's3://s3bucket/tbl_example' CREDENTIALS 'aws_access_key_id=xxx;aws_secret_access_key=xxx' delimiter '|' removequotes escape;

逃脱卸载 命令,对于分隔卸载文件中的 CHAR 和 VARCHAR 列,在每次出现以下字符之前都会放置一个转义字符 (\):
  • 换行:\n
  • 回车:\r
  • 为卸载的数据指定的分隔符。
  • 转义字符:\
  • 引号字符:"或 '(如果同时指定了 ESCAPE 和 ADDQUOTES
    在 UNLOAD 命令中)。

  • 并与 逃脱复制 命令,输入数据中的反斜杠字符 () 被视为转义字符。紧跟在反斜杠字符之后的字符将作为当前列值的一部分加载到表中,即使它是通常用于特殊目的的字符。例如,当这些字符中的任何一个是列值的合法部分时,您可以使用此选项对分隔符、引号、嵌入的换行符或转义字符本身进行转义。

    关于amazon-redshift - 如何安全地卸载/复制 RedShift 中的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26410826/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com