如何在配置单元插入查询中忽略输入开始

Posted

技术标签:

【中文标题】如何在配置单元插入查询中忽略输入开始【英文标题】:How to ignore start on input in hive insert query 【发布时间】:2017-07-11 20:32:06 【问题描述】:

我有标签分隔的数据格式 州:ca city:california 人口:1M

我想创建数据库,当我插入时,我应该忽略“state:”、“city:”和“poulation”,我想将 state 插入到 state 数据库中,将 state 和 city 插入到 city 表中。

将有 2 个表格,然后一个带有州和人口,另一个带有城市和人口

CREATE EXTERNAL TABLE IF NOT EXISTS CSP.original 
(
    st STRING COMMENT 'State', 
    ct STRING COMMENT 'City', 
    po STRING COMMENT 'Population'
) 
COMMENT 'Original Table' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 

这不起作用。它添加了评论,但没有忽略。 而且我还想为州和城市创建 2 个表。谁能帮帮我?

【问题讨论】:

您的问题非常令人困惑。请让我更清楚 【参考方案1】:

您必须先创建外部表。

第一步:

CREATE EXTERNAL TABLE all_info (state STRING, population INT) PARTITIONED BY (date STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t;

第二步:

CREATE TABLE IF NOT EXISTS state (state string, population INT) PARTITIONED BY (date string);
CREATE TABLE IF NOT EXISTS city (city string, population INT) PARTITIONED BY (date string);

第三步:

INSERT OVERWRITE TABLE state
PARTITION (date = ‘201707076’)
SELECT *
FROM all_info
WHERE date = ‘20170706’ AND
              instr(state, ‘state:’) = 1;  
INSERT OVERWRITE TABLE city
PARTITION (date = ‘201707076’)
SELECT *
FROM all_info
WHERE date = ‘20170706’ AND
              instr(state, ‘city:’) = 1;  

【讨论】:

以上是关于如何在配置单元插入查询中忽略输入开始的主要内容,如果未能解决你的问题,请参考以下文章

如何从配置单元表插入分区表(作为镶木地板)?

如何使用插入命令在配置单元中插入当前日期

如何从字段中动态插入配置单元?

如何忽略单元格输入中的制表键而不是制表符?数据网格视图 C#

如何在配置单元中使用正则表达式排除字符串中的特殊字符

如何在配置单元表中插入具有地图列的数据框