将数据加载到 Amazon Redshift Spectrum 时删除双引号 "
Remove double quotes " while loading data to Amazon Redshift Spectrum
我想将数据加载到 amazon redshift external table。数据为 CSV 格式并带有引号。
我们是否有像 REMOVEQUOTES 这样的东西,我们在 redshift external 的复制命令中有
table秒。还有什么不同的选项可以在外部 table 中加载固定长度的数据。
要创建外部 Spectrum table,您应该参考 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})")
您还可以使用正则表达式来解析由多个字符括起来的数据。示例(在 CSV 文件中,字段被三重双引号 (""") 包围):
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.AbstractSerDe'
WITH SERDEPROPERTIES (
'input.regex' = "^\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*$" )
)
我想将数据加载到 amazon redshift external table。数据为 CSV 格式并带有引号。 我们是否有像 REMOVEQUOTES 这样的东西,我们在 redshift external 的复制命令中有 table秒。还有什么不同的选项可以在外部 table 中加载固定长度的数据。
要创建外部 Spectrum table,您应该参考 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})")
您还可以使用正则表达式来解析由多个字符括起来的数据。示例(在 CSV 文件中,字段被三重双引号 (""") 包围):
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.AbstractSerDe'
WITH SERDEPROPERTIES (
'input.regex' = "^\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*,\"*([^\"]*)\"*$" )
)