sqoop導出工具


sqoop的導出工具是把HDFS上文件中的數據導出到mysql中

mysql中的表

現在在linux上創建一個文件,並把這個文件上傳到hdfs上

cat person.txt 
7,no7,77
8,no8,88

$ hadoop fs -mkdir person_export
$ hadoop fs -put -f person.txt person_export
$ hadoop fs -ls person_export
Found 1 items
-rw-r--r--   3 18232184201 supergroup         18 2016-07-26 17:16 person_export/person.txt

 一、export-dir

使用export-dir來指定導出的目錄,會導出該目錄下的所有文件。

$ sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password 123456 --table person -m 1 --export-dir person_export

最終的效果可以在mysql中的表體現:

 

二、插入中文亂碼問題

hdfs上的內容:

3,第7個,77
4,第8個,88 

再次執行上面一樣的export命令,在mysql中就會產生亂碼:

可以使用下面的命令來解決亂碼問題:

 sqoop export --connect "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password 123456 --table person -m 1 --export-dir person_export

 

完成之后mysql的記錄是: 

三、update-key update-mode

需求hdfs文件中存在的記錄做更新,不存在的記錄則插入

 hdfs上的文件:

,第10個,100
,第11個,110
3,第3個,30
4,第4個,40

 執行命令:

sqoop export --connect "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password 123456 --table person -m 1 --export-dir person_export --update-key id --update-mode allowinsert

需要注意的是,update-mode有兩種,一種是uodateonly,一種是allowinsert

執行完成之后,mysql中的數據:

四、input-fields-terminated-by

input-fields-terminated-by可以用來指定hdfs上文件的分隔符,默認是逗號

HDFS上的數據格式(以空格切分):

 aaa 100
 bbb 110

執行下面的命令來導出:

 sqoop export --connect "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password 123456 --table person -m 1 --export-dir person_export --input-fields-terminated-by ' '

 

導出的結果是:

五、columns

使用colums來指定導出到mysql的列

 hdfs上的數據格式:

 aaa
 bbb

 

執行下面的命令:

sqoop export --connect "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password 123456 --table person -m 1 --export-dir person_export --input-fields-terminated-by ' ' --columns="id,name"

 

執行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM