我想将数据加载到亚马逊Redshift外部表中。 数据以CSV格式存在并带有引号。我们是否有类似于对Redshift外部表的复制命令中REMOVEQUOTES的选项。此外,有哪些不同的选项可以用于加载固定长度数据到外部表中。
我想将数据加载到亚马逊Redshift外部表中。 数据以CSV格式存在并带有引号。我们是否有类似于对Redshift外部表的复制命令中REMOVEQUOTES的选项。此外,有哪些不同的选项可以用于加载固定长度数据到外部表中。
CREATE TABLE
语法。要加载由双引号转义的 CSV,您应该将以下行用作您的 ROW FORMAT
。ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'separatorChar' = ',',
'quoteChar' = '\"',
'escapeChar' = '\\'
)
CREATE TABLE
语句的相关部分将如下所示(假设有3个长度为100的字段)。ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES ("input.regex" = "(.{100})(.{100})(.{100})")
你也可以使用正则表达式来解析由多个字符包围的数据。例如(在 CSV 文件中,字段被三个双引号("")包围):
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.AbstractSerDe'
WITH SERDEPROPERTIES (
'input.regex' = "^\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*$" )
)