小编Alo*_*onG的帖子

如何在 AWS Athena 中按列名称而不是按列顺序从多个 CSV 创建表

我想从 S3 中存储的多个 CSV 文件在 AWS Athena 中创建一个表。

CSV 具有包含列名称的标题行。我的问题是每个 CSV 中的列的顺序不同,我想按列的名称获取列。

当我在 Athena 中尝试正常的 CREATE TABLE 时,我得到了前两列。

CREATE EXTERNAL TABLE `test`(
  `id` string, 
  `name` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES ( 
  'escapeChar'='\\', 
  'quoteChar'='\"', 
  'separatorChar'=',') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://...'
TBLPROPERTIES (
  'has_encrypted_data'='false')
Run Code Online (Sandbox Code Playgroud)

这是一个例子:

.csv 1:

+----+-------+-------+---------+
| id | name  | price | comment |
+----+-------+-------+---------+
|  1 | shirt |   123 | abc     |
|  2 | shoes |   222 | ddd     |
+----+-------+-------+---------+ …
Run Code Online (Sandbox Code Playgroud)

ddl hive amazon-athena

4
推荐指数
1
解决办法
5282
查看次数

标签 统计

amazon-athena ×1

ddl ×1

hive ×1