場景:
從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'