怎樣將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文件。