我已经知道如何将文件从redshift卸载到s3中作为一个文件.我需要知道如何使用列标题卸载.谁能请帮忙或给我一个线索?
我不想在shell或python中手动完成它.
小智 26
如果您的任何列都是非字符的,那么您需要将它们显式地转换为char或varchar,因为UNION会强制转换.
下面是一个完整语句的示例,它将在S3中创建一个带有第一行标题的文件.
输出文件将是带引号的单个CSV文件.
此示例假定column_1中的数值.您需要将ORDER BY子句调整为数字列,以确保标题行位于S3文件的第1行.
******************************************
/* Redshift export to S3 CSV single file with headers - limit 6.2GB */
UNLOAD ('
SELECT \'column_1\',\'column_2\'
UNION
SELECT
CAST(column_1 AS varchar(255)) AS column_1,
CAST(column_2 AS varchar(255)) AS column_2
FROM source_table_for_export_to_s3
ORDER BY 1 DESC
;
')
TO 's3://bucket/path/file_name_for_table_export_in_s3_' credentials
'aws_access_key_id=<key_with_no_<>_brackets>;aws_secret_access_key=<secret_access_key_with_no_<>_brackets>'
PARALLEL OFF
ESCAPE
ADDQUOTES
DELIMITER ','
ALLOWOVERWRITE
GZIP
;
****************************************
Run Code Online (Sandbox Code Playgroud)
fez*_*fez 22
从集群版本1.0.3945开始,Redshift现在支持将数据卸载到S3,每个文件中都有标题行,即
UNLOAD('select column1, column2 from mytable;')
TO 's3://bucket/prefix/'
IAM_ROLE '<role arn>'
HEADER;
Run Code Online (Sandbox Code Playgroud)
注意:您不能同时使用该HEADER选项FIXEDWIDTH.
https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html
San*_*ane 12
redshift unload没有提供直接选项.
但是我们可以通过调整查询来生成包含添加了标题的行的文件.
首先,我们将尝试使用并行关闭选项,以便它只在文件上创建.
"默认情况下,UNLOAD根据群集中的切片数量并行地将数据写入多个文件.默认选项为ON或TRUE.如果PARALLEL为OFF或FALSE,则UNLOAD按顺序写入一个或多个数据文件,绝对排序根据ORDER BY子句,如果使用了一个.数据文件的最大大小为6.2 GB.例如,如果卸载13.4 GB的数据,UNLOAD会创建以下三个文件."
要在卸载文件中包含标题,我们将执行以下操作.
假设你有如下表格
create table mutable
(
name varchar(64) default NULL,
address varchar(512) default NULL
)
Run Code Online (Sandbox Code Playgroud)
然后尝试使用您卸载的select命令,如下所示添加标头
( select 'name','address') union ( select name,address from mytable )
Run Code Online (Sandbox Code Playgroud)
这会将标题名称和地址添加为输出中的第一行.
Kam*_*ran 12
只是为了补充答案,为了确保标题行首先出现,您不必按特定的数据列进行排序.您可以将UNIONed选择括在另一个选择中,向它们添加一个序数列,然后按该列的外部选择顺序,而不将其包含在所选列的列表中.
UNLOAD ('
SELECT column_1, column_2 FROM (
SELECT 1 AS i,\'column_1\' AS column_, \'column_2\' AS column_2
UNION ALL
SELECT 2 AS i, column_1::varchar(255), column_2::varchar(255)
FROM source_table_for_export_to_s3
) t ORDER BY i
')
TO 's3://bucket/path/file_name_for_table_export_in_s3_'
CREDENTIALS
'aws_access_key_id=...;aws_secret_access_key=...'
DELIMITER ','
PARALLEL OFF
ESCAPE
ADDQUOTES;
Run Code Online (Sandbox Code Playgroud)
小智 7
Redshift现在支持带标题的卸载。2018年9月19日至10月10日发布。
使用标头卸载的语法是-
卸载('select-statement')
到's3:// object-path / name-prefix'
授权
头
| 归档时间: |
|
| 查看次数: |
25669 次 |
| 最近记录: |