案例1:全量导入hdfs(删除目标文件夹)
这是建立job,运行时需要 sqoop job -exec test_item_job
sqoop job --create test_item_job \
--meta-connect jdbc:hsqldb:hsql://192.168.1.86:16000/sqoop \
-- import \
--connect jdbc:oracle:thin:@192.168.1.160:1521:test \
--username test \
--password-file /user/admin/sqoop/pwd/dev/test.pwd \
--target-dir /db/test/t_test_item \
--table TEST.T_TEST_ITEM \
--fields-terminated-by "\t" \
--lines-terminated-by "\n" \
--null-string '\\N' \
--null-non-string '\\N' \
--delete-target-dir \
-m 1
注释:
--meta-connect :由于连接的是集群,需要一个公共的db仓库管理job;
–target-dir : 目标文件夹;
–table : 源数据table ,注意oracle需要大写
;
–fields-terminated-by : 字段分割;
–lines-terminated-by : 一行分割 ;
–null-string ,–null-non-string :对数字null 和字符串null处理 ;
–delete-target-dir : 文件夹存在就删除;
案例2:oracle追加导入hdfs
这是建立job,运行时需要 sqoop job -exec test_info_job
sqoop job --create test_info_job \
--meta-connect jdbc:hsqldb:hsql://192.168.1.86:16000/sqoop \
-- import \
--connect jdbc:oracle:thin:@192.168.1.160:1521:test \
--username test \
--password-file /user/admin/sqoop/pwd/dev/test.pwd \
--target-dir /db/test/test_info \
--table TEST.TEST_INFO \
--fields-terminated-by "\t" \
--lines-terminated-by "\n" \
--null-string '\\N' \
--null-non-string '\\N' \
--incremental append \
--check-column UPDATE_TIME \
--merge-key ID \
--last-value "2006/01/01 00:00:00" \
--hive-drop-import-delims \
-m 1
注释:
–incremental append 追加模式,和–check-column和 --last-value一起配合使用。
–merge-key 合并字段。
–hive-drop-import-delims 防止字段内的一些特殊字符影响分割
案例3:oracle导入hive
sqoop import \
--connect jdbc:oracle:thin:@192.168.1.160:1521:test \
--username test \
--password test \
--table BASE_TEST \
--fields-terminated-by '\t' \
--delete-target-dir \
--num-mappers 1 \
--hive-import \
--hive-database default \
--hive-table base_test
案列4:使用overwrite导入
只是添加–overwrite这里将不进行代码展示