根据数据类型和列名在 impala 表中插入记录

Posted

技术标签:

【中文标题】根据数据类型和列名在 impala 表中插入记录【英文标题】:Insert record in impala table based on datatype and column name 【发布时间】:2016-02-24 14:42:13 【问题描述】:

我有一些格式是这样的黑斑羚表。

+--------------------------+-----------+---------+
| name                     | type      | comment |
+--------------------------+-----------+---------+
| col_key                   | bigint    |         |
| col_cd                    | smallint  |         |
| col_desc                  | string    |         |
| col_type_cd               | string    |         |
| col_scheme_cd             | string    |         |
| name                      | string    |         |
| source_cd                 | string    |         |
| source_cd1                | bigint    |         |
| load_dt                   | timestamp |         |
| effective_start_dt        | timestamp |         |
| effective_end_dt          | timestamp |         |
+--------------------------+-----------+---------+

我必须像这样插入值

如果数据类型是

bigint then insert      0
smallint then insert    0
decimal then  insert    0.0
float then insert       0.0
string then insert      unknown
timestamp then insert   1970-01-01 00:00:00

如果列名是

effective_start_dt then insert 1970-01-01 00:00:00
effective_end_dt then insert   3499-12-31 00:00:00

我已经实现了一种解决方案,我能够识别数据类型并基于 我正在插入记录,但它不适用于我的第二种情况,即我根据列名插入记录并插入 1970-01-01 00:00:00 vale for effective_end_dt

在这方面寻求帮助。 其他表的列位置可能会有所不同,因此我正在尝试一些通用解决方案。我正在尝试从 shell 脚本中实现此解决方案。

【问题讨论】:

【参考方案1】:

您需要将字符串转换为时间戳

cast("1979-01-01 00:00:00" as timestamp)

【讨论】:

以上是关于根据数据类型和列名在 impala 表中插入记录的主要内容,如果未能解决你的问题,请参考以下文章

如何在hadoop环境中创建的表中插入多条记录

使用java在impala表中插入数据

Mysql中具有相同列名的表之间的数据复制

利用SQL语句插入更新删除数据表中的数据

使用 Ibis python 将数据插入到 impala 表中

大容量数据库