Sqoop数据导入导出
2017-04-21 17:05
295 查看
使用Import命令 :
(A)将mysql中的test数据库中的表person导入到hdfs
bin/sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table person
不指定目的路径的话,会自动到导入到hdfs上当前用户的根目录下面,产生一个文件夹,文件夹的而名称就是表名person
默认sqoop有4个maptask,所以会生成四个输出文件
注意:在写jdbc url时候不要使用localhost或者jdbc:mysql///test,这种方式会报错。因为会报The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.的异常
(B)将mysql中的test数据库中的表person导入到hdfs指定的目录下面
bin/sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table person --target-dir hdfs://ns1/sqoop/in
如果target-dir不存在,则会自动创建该目录结构
目的文件夹如果已经存在,使用上述命令会报错,directory is already exists!解决之道,干掉目的文件夹,或重写写一个目的文件
删除目的文件夹的option为 --delete-target-dir
bin/sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table person --target-dir hdfs://ns1/sqoop/in --delete-target-dir
(C)导入hdfs数据的时候,修改输出的文件个数,也就是MapTask的个数
默认是4
修改选项-m N(N为指定的MapTask的个数)
bin/sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table person --target-dir hdfs://ns1/sqoop/in --delete-target-dir -m 1
(D)在原有基础上对内容进行追加
1、使用选项--append
注意:
--append and --delete-target-dir不能一块使用
2、定量增加
-check-column 'id' -incremental append --last-value 2(导入表中最后两条记录)
sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username 'root' --password 'root' --table person --target-dir hdfs://ns1/sqoop/in-1 -m 1 --append -check-column 'id' -incremental append --last-value 2
3、条件导入
注意:在使用条件导入的时候,不要有中文,而且将条件使用""括起来
--where "gender like '%female'"
sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username 'root' --password 'root' --table person --target-dir hdfs://ns1/sqoop/in-1 -m 1 --append --where "gender like '%female'"
将person表中gender为female的内容追加到hdfs指定目录下面
4、使用SQL导入***
sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username 'root' --password 'root' --query "select id, name, age, gender from person where age=13 and \$CONDITIONS" --target-dir hdfs://ns1/sqoop/in-1 -m 1 --append --fields-terminated-by
"," --split-by ","
在使用SQL导入的时候必须要在where条件中添加$CONDITIONS
(E)导入到Hive中
在导入到hive的过程中,原表必须要有pk主键
sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username 'root' --password 'root' --table htest --hive-import -m 1
上述命令,会将test中的表htest导入到hive中,如果hive中没有htest,创建相应的表
导入rdbms中一个数据库下的所有的表
sqoop import-all-tables --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --hive-import --fields-terminated-by "\001" --lines-terminated-by "\n"
(F)导入到HBase中
sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username 'root' --password 'root' --table person --hbase-create-table --hbase-row-key id --hbase-table htest --column-family cf
========================================================================
Sqoop的导出Export :
(A)、导入到mysql中,需要先有表
sqoop export --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table test --export-dir /sqoop/in
(B)、中文乱码问题,如果发生乱码在url加上关于utf-8的字符集
sqoop export --connect "jdbc:mysql://192.168.7.112:3306/test?useUnicode=true&characterEncoding=utf-8"--username root --password root --table test --export-dir /sqoop/in
(C)、从Hive到MySQL
sqoop export --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table test --export-dir /user/hive/warehouse/person --input-fields-terminated-by '\001'
(A)将mysql中的test数据库中的表person导入到hdfs
bin/sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table person
不指定目的路径的话,会自动到导入到hdfs上当前用户的根目录下面,产生一个文件夹,文件夹的而名称就是表名person
默认sqoop有4个maptask,所以会生成四个输出文件
注意:在写jdbc url时候不要使用localhost或者jdbc:mysql///test,这种方式会报错。因为会报The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.的异常
(B)将mysql中的test数据库中的表person导入到hdfs指定的目录下面
bin/sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table person --target-dir hdfs://ns1/sqoop/in
如果target-dir不存在,则会自动创建该目录结构
目的文件夹如果已经存在,使用上述命令会报错,directory is already exists!解决之道,干掉目的文件夹,或重写写一个目的文件
删除目的文件夹的option为 --delete-target-dir
bin/sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table person --target-dir hdfs://ns1/sqoop/in --delete-target-dir
(C)导入hdfs数据的时候,修改输出的文件个数,也就是MapTask的个数
默认是4
修改选项-m N(N为指定的MapTask的个数)
bin/sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table person --target-dir hdfs://ns1/sqoop/in --delete-target-dir -m 1
(D)在原有基础上对内容进行追加
1、使用选项--append
注意:
--append and --delete-target-dir不能一块使用
2、定量增加
-check-column 'id' -incremental append --last-value 2(导入表中最后两条记录)
sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username 'root' --password 'root' --table person --target-dir hdfs://ns1/sqoop/in-1 -m 1 --append -check-column 'id' -incremental append --last-value 2
3、条件导入
注意:在使用条件导入的时候,不要有中文,而且将条件使用""括起来
--where "gender like '%female'"
sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username 'root' --password 'root' --table person --target-dir hdfs://ns1/sqoop/in-1 -m 1 --append --where "gender like '%female'"
将person表中gender为female的内容追加到hdfs指定目录下面
4、使用SQL导入***
sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username 'root' --password 'root' --query "select id, name, age, gender from person where age=13 and \$CONDITIONS" --target-dir hdfs://ns1/sqoop/in-1 -m 1 --append --fields-terminated-by
"," --split-by ","
在使用SQL导入的时候必须要在where条件中添加$CONDITIONS
(E)导入到Hive中
在导入到hive的过程中,原表必须要有pk主键
sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username 'root' --password 'root' --table htest --hive-import -m 1
上述命令,会将test中的表htest导入到hive中,如果hive中没有htest,创建相应的表
导入rdbms中一个数据库下的所有的表
sqoop import-all-tables --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --hive-import --fields-terminated-by "\001" --lines-terminated-by "\n"
(F)导入到HBase中
sqoop import --connect jdbc:mysql://192.168.7.112:3306/test --username 'root' --password 'root' --table person --hbase-create-table --hbase-row-key id --hbase-table htest --column-family cf
========================================================================
Sqoop的导出Export :
(A)、导入到mysql中,需要先有表
sqoop export --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table test --export-dir /sqoop/in
(B)、中文乱码问题,如果发生乱码在url加上关于utf-8的字符集
sqoop export --connect "jdbc:mysql://192.168.7.112:3306/test?useUnicode=true&characterEncoding=utf-8"--username root --password root --table test --export-dir /sqoop/in
(C)、从Hive到MySQL
sqoop export --connect jdbc:mysql://192.168.7.112:3306/test --username root --password root --table test --export-dir /user/hive/warehouse/person --input-fields-terminated-by '\001'
相关文章推荐
- 利用sqoop将hive数据导入导出数据到mysql
- 利用sqoop将hive数据导入导出数据到mysql
- sqoop简单操作-从mysql导入导出数据
- Hive数据导入、sqoop数据导入导出
- sqoop导入导出数据(cdh版)
- sqoop数据导出导入命令
- 利用sqoop将hive数据导入导出数据到mysql
- Sqoop安装配置及数据导入导出
- Sqoop安装配置及数据导入导出
- sqoop-1.4.4导入导出mysql数据到hadoop2.2.0 HDSF集群
- 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- sqoop的数据导入导出
- 利用sqoop将hive数据导入导出数据到mysql
- Hive数据导入、sqoop数据导入导出
- 利用sqoop将hive数据导入导出数据到mysql (转)
- 利用sqoop将hive数据导入导出数据到mysql
- 通过sqoop 实现hdfs与mysql的数据导入导出
- 使用sqoop工具进行数据导入导出 sqoop并行导入
- sqoop数据导出导入命令
- 利用sqoop完成数据导入导出