更新时间:2024-10-28 GMT+08:00

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)