場景:
從Hive導出數據表到Mysql並且Mysql表已創建,其中存在的Mysql表中還有一個Hive中沒有的自增ID字段(自動寫入時間字段類似這里不再重復敘述)。
這種情況怎么使用Sqoop呢?
可以使用 --columns參數來指定要導入/導出的字段,其余字段(自增ID/寫入時間字段等)Mysql中會自動更新;
sqoop export -D mapred.job.name="任務的名字" -D mapred.job.queue.name=root.hdfs --connect jdbc:mysql://ip:port/db?zeroDateTimeBehavior=convertToNull --username user_name --password password --table mysql_table --export-dir /hdfs/xxx/dt=2019-12-31/ --outdir /緩存路徑xxxx/sqoop_generated --num-mappers 1 --input-null-string '\\N' --input-null-non-string '\\N' --fields-terminated-by '\001' --columns "col1,col2,col3”
上面的命令任務的名字、任務的隊列可以選填,刪減掉一些可選項如下:
sqoop export --connect jdbc:mysql://ip:port/db?zeroDateTimeBehavior=convertToNull --username user_name --password password --table mysql_table --export-dir /hdfs/xxx/dt=2019-12-31/ --outdir /緩存路徑xxxx/sqoop_generated --num-mappers 1 --input-null-string '\\N' --input-null-non-string '\\N' --fields-terminated-by '\001' --columns "col1,col2,col3”
sqoop export \
--connect jdbc:mysql://${hostName}:${port}/${db_info} \
--username ${username} \
--password ${password} \
--table xs_1_product_dacheng_collect \
--hive-partition-key dt \
--hive-partition-value '${do_data}' \
--export-dir /gwm/dw/ads/${tableName}/dt=${do_data} \
--fields-terminated-by "\t" \
--input-null-string '\\N' \
--input-null-non-string '\\N'
