以下信息,只要根據自己的數據庫的相應信息修改以下,即可,sqoop其實就是很簡單的,一般hive數據存儲為列式存儲,所以要提前把要寫到關系型數據庫的數據寫到一個text后綴的表里,然后才能導出到關系型數據庫中。
還要特別注意寫到關系型數據庫中數據的格式要一一對應
#pg庫相關信息
database_connection="jdbc:postgresql://192.168.0.2:8080/db_name" database_username="user" database_password="pass" databaseTableName="test2" databaseColums="a1,a2,a3"
#將數據寫到一個臨時表中
hive -v -e " set mapred.job.queue.name=${queueName}; USE hive_db_name; INSERT OVERWRITE TABLE test3 select a1,a2,a3 from test1 where y='2019' and m='11' and d='29'; "; if [[ $? != 0 ]]; then print_log "hive執行失敗!" exit 1 fi #hdfs路徑 exportHdfsPath="hdfs://hdfs01-shyp-cx/hive_db_name/test3" sqoop export -Dmapred.job.queue.name=$queueName \ //mr的隊列 --connect $database_connection \ //關系型數據庫的連接 --username $database_username \ //關系型數據庫的用戶名 --password $database_password \ //關系型數據的密碼 --export-dir $exportHdfsPath \ //hive表的hdfs路徑 --verbose \ --table $databaseTableName \ //要寫到的表名 --columns $databaseColums \ //要寫過去的字段名 --input-fields-terminated-by '\001' \ //hive表的分割符,注意表一定是行式存儲的表才能導出,一般是text后綴的表 --input-lines-terminated-by '\n' \ //每行的分割符 --input-null-string '\\N' \ //空值處理 --input-null-non-string '\\N' //空值處理 if [[ $? != 0 ]]; then print_log "sqoop導出失敗!" exit 1 fi