怎样将csv文件导入hive中
A. 怎么把csv文件导入数据库中
将CSV文件导入数据库的方法有很多种,可以使用脚本猛则神、数据库客户端或者数据库提供的管理功能来实现。比如可以在MySQL中使枝亏用LOAD DATA INFILE命令,在SQL Server中使用BCP命令,在Oracle中使用SQL*Loader等。
拓展:另外,还可以使用编程语言,盯乎比如Java或者Python,开发一个专门的程序来实现csv文件到数据库表之间的转换。
B. 将CSV文件导入hive,不带双引号
"AH","CM113-Z","37337"
"AH","F663N","2114"
"AH","F663NV3a","146011"
"AH"敬租,"G-140W-MD","302993"
"AH","G-140W-MH","193725"
"AH","GM219-S","697032"
"AH","GM220-S","1591678"
"AH","GS3101","457568"
"AH"坦稿游,"GS3202","152203"
"AH","H1s-3","305020"
"AH","H2-3","791092"
create table knowyou_term_ods.IHGUProct(
provinceShortName string,
proctname string,
geshu string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES ('input.regex' = '\"(.*)\",\"(.*)\",\"(.*)\"','output.format.string' = '%1$s\\001%2$s\\001%3$s')
STORED AS TEXTFILE;
load data local inpath '/data/ZDGL/IHGUProctName.csv'让销 overwrite into table knowyou_term_ods.IHGUProct;
hive> select * from knowyou_term_ods.IHGUProct limit 10;
OK
AH CM113-Z 37337
AH F663N 2114
AH F663NV3a 146011
AH G-140W-MD 302993
AH G-140W-MH 193725
AH GM219-S 697032
AH GM220-S 1591678
AH GS3101 457568
AH GS3202 152203
AH H1s-3 305020
解决
C. 带""的CSV文件如何导入hive
使用HIVE的Insert overwrite到本地目录的方法进行文件导出,但问题多多。主要原因盯桥是分隔符经常出现在字段中,实操中用竖杠|分隔问题较少
insert overwrite local directory '/url/lxb/hive'
row format delimited
fields terminated by ','
select * from table_name limit 100
此外也尝试使用HIVE -E的方法,再通过sed 's/x01/,/g'命令进行文件过滤。
两种效果均不是很理想,究其原因,主要是两种方法导出的文件都不是凯困猛标准CSV。
目前使用比较顺畅的方式是通过spark-shell2, 先把Hive表尺敬转化为DataFrame,再基于DataFrame.writer.csv()DataFrameWriter.csv导出到HDFS。
D. 如何将excel中的数据导入hive仓库中
将存放在excel表中的数据如何导入到hive中,首先前提是excel表中数据类型以及长度要和hive仓库中表的字段属性一致,否则会报异常。其次因为建表的时候,已经定义了表的分割符号(row format delimited fields terminated by ‘,’),所以不能直接将excel表格中数据导入的hive仓库中。处理方式如下:
先将excel表中数据另存转化为data.csv格式,转化为.csv格式的文件默认就是用“敬乱,”进行分割的,可以用notepad++打开data.csv格式查看。然后再讲数据导入到hive仓库中即可。但是执行如下导入语句时,发现报错,显示Wrong file format。
检销稿嫌查以后发现,因为在创建表格时,使用的是RCFILE存储格式
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'
而导入到是TextFile文件格式,所以报错,解决办法建表的格式默认使用TextFile格式即可。
如何将文件转化为rcfile文件格式:
(1)hive 中直接通过textfile表亏手进行insert转换,比如通过如下将textfile数据导入到rcfile中。
insert overwrite table http_RCTable partition(dt='2013-09-30') select p_id,tm,idate,phone from tmp_testp where dt='2013-09-30';
(2)使用maprece将普通的文件压缩成RCFile,并且再读取RCFile文件。