我想将数据加载到amazon redshift外部表。数据采用CSV格式并带引号。 我们是否有类似REMOVEQUOTES的东西,我们在redshift外部的复制命令中有 表。还有什么是在外部表中加载固定长度数据的不同选项。
答案 0 :(得分:5)
要创建外部Spectrum表,您应该参考Athena提供的CREATE TABLE
语法。要加载由双引号转义的CSV,您应使用以下行作为ROW FORMAT
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'separatorChar' = ',',
'quoteChar' = '\"',
'escapeChar' = '\\'
)
对于固定长度文件,您应该使用RegexSerDe。在这种情况下,CREATE TABLE
语句的相关部分将如下所示(假设3个字段的长度为100)。
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES ("input.regex" = "(.{100})(.{100})(.{100})")
答案 1 :(得分:0)
您还可以使用正则表达式来解析由多个字符包围的数据。示例(在CSV文件中,字段用三重双引号(“”“)包围):
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.AbstractSerDe'
WITH SERDEPROPERTIES (
'input.regex' = "^\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*$" )
)