gpt4 book ai didi

mysql - 如何映射配置单元表中的列名并将其替换为配置单元表中的新值

转载 作者:可可西里 更新时间:2023-11-01 06:33:51 26 4
gpt4 key购买 nike

我有一个如下所示的 csv 数据,其中数据每 10 分钟以以下格式出现。我需要通过将列名映射到不同的列名来将这些数据插入到配置单元中。 (列不是按固定顺序排列的,它们会更改顺序,我们总共有 10 列,有时我们会错过很多列,如下面的一个示例)示例 csv 文件:-

1  2  6  4
u f b h
a f r m
q r b c

现在插入到配置单元时我需要替换列名例如

1 -> NBR
2 -> GMB
3 -> GSB
4 -> KTC
5 -> VRV
6 -> AMB

现在我需要插入到配置单元表中,如下所示

NBR GMB   GSB   KTC   VRV   AMB
u f NULL h NULL b
a f NULL m NULL r

谁能帮我解决如何将这些值插入配置单元

最佳答案

假设您可以在源 CSV 中获取列标题,您需要将它们从源编号映射到它们的列名称。

sed -i 's/1/NBR/g;秒/2/专线小巴/克;秒/3/GSB/克; s/4/KTC/克;秒/5/VRV/克; s/6/AMB/g;...;...;...;...' input.csv

由于您只获得 hive 表中总列的未知子集,因此您需要从中翻译 CSV

NBR,GMB,AMB,KTC
u,f,b,h
a,f,r,m
q,r,b,c

NBR,GMB,GSB,KTC,VRV,AMB,...,...,...,...
u,f,null,b,null,h,null,null,null,null
a,f,null,r,null,m,null,null,null,null
q,r,null,b,null,c,null,null,null,null

为了将它们正确地插入到您的表中。

来自Apache Wiki :

Values must be provided for every column in the table. The standard SQL syntax that allows the user to insert values into only some columns is not yet supported. To mimic the standard SQL, nulls can be provided for columns the user does not wish to assign a value to.

Standard Syntax:
INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]

Where values_row is:
( value [, value ...] )
where a value is either null or any valid SQL literal

使用 LOAD DATA INPATH,即使设置了 tblproperties("skip.header.line.count"="1"),仍然需要有效的 SQL 文字表中的所有列。这就是您缺少列的原因。

如果您无法让 CSV 的制作者创建一个包含 1,2,...9,10 列的文件,这些列的顺序与您的表格列和连续逗号或 null 字符在数据中,编写某种脚本来添加缺失的列名称,按照您需要的顺序,以及数据中所需的 null 值。

关于mysql - 如何映射配置单元表中的列名并将其替换为配置单元表中的新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57050657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com