LOAD
语法
LOAD DATA INPATH filepath [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=value1,partcol2=values2…)]
描述
LOAD DATA命令用于从文件或者文件夹加载数据到table。
Filepath:需要填写文件或目录的绝对路径。
OVERWRITE:如果使用了这个关键字,目标表(或分区)的数据将被删除,并使用文件中读取的数据来替代。
限制
如果要加载数据到指定分区,用户必须在partition子句中列出表的所有字段。
不支持复杂类型数据,比如Array,Map等。
不支持外部表(external)。
数据文件的格式应当与目标表的文件格式一样。
创建目标表时,应该指定好文件的分隔符,并且分隔符要与数据文件中的分隔符保持一致。
示例
创建文件“f1.txt”,填入3行数字,并通过HDFS上传到“/opt/load_test/”目录下。
--读取f1.txt的数据填充表f1
CREATE TABLE tb_load_f1(id int) with (format='TEXTFILE');
LOAD DATA INPATH '/opt/load_test/f1.txt' into table tb_load_f1;
select * from tb_load_f1;
id
----
1
2
3
(3 rows)
--读取/opt/load_test/目录下的文件,填充表f2
CREATE TABLE tb_load_f2(id int) with (format='TEXTFILE');
LOAD DATA INPATH '/opt/load_test/' into table tb_load_f2;
select * from tb_load_f2;
id
----
1
2
3
(3 rows)
--读取f3.txt文件内容填充表f3(多字段,数据分隔符为'-'),并通过HDFS上传到/opt/load_test/ 目录下,f3.txt文件内容如下:
1-n1
2-n2
-- 创建目标表tb_load_f3
CREATE TABLE tb_load_f3(id int,name varchar) with(format='TEXTFILE',textfile_field_separator='-');
Load data inpath '/opt/load_test/f3.txt' into table tb_load_f3;
Select * from tb_load_f3;
id | name
----|------
1 | n1
2 | n2
(2 rows)