Hive 可以通过 load data inpath 加载本地或者 hdfs 的数据到 hive 表中,有时会出现生成数据长于 hive 表字段或者短于 hive 表字段的情况,经过测试,两种情况下 Load Data 到 hive 表中均没有问题。
首先建立测试的 Hive 表,共包含id,年龄,性别3个属性:
function createTable() {
hive -e "
create table if not exists tmp_test_table_1203 (
id STRING,
age STRING,
gender STRING
)
PARTITIonED BY(dt string)
row format delimited fields terminated by 't'
"
}
createTable
二.实践操作
1. 加载数据函数
function loadData() {
path=$1
part=$2
hive -e "
load data local inpath '${path}' overwrite into table tmp_test_table_1202 partition(dt='${part}')
;"
}
loadData long.txt long
如果加载 HDFS 数据采用下述语法:
load data inpath '${path}' overwrite into table tableName partition(dt='$partition')
2.加载长数据
long.txt :
1 90s 0 A 2 80s 1 A 3 90s 0 B 4 70s 1 C 5 00s 1 B
loadData long.txt long3.加载短数据
short.txt :
6 90s 7 80s 8 90s 9 70s 10 00s
loadData short.txt short4.检查结果
字段个数超过 hive 表字段的会截取,字段个数少于 hive 表字段的会默认补充 NULL



