sqoop遇到实际问题
shell脚本中代码如下:
#!/bin/bash
d1=$(date -d "$1" +%Y-%m-%d" "%H:%M:%S)
d2=$(date -d "$2" +%Y-%m-%d" "%H:%M:%S)
time=$(date -d "-1 day" +%Y-%m-%d)
sqoop import \
--connect \
jdbc:mysql://node3:33060/cn_uniondrug_middleend_ordercenter?zeroDateTimeBehavior=convertToNull \
--username \
root \
--password-file \
/tmp/.mysql_oc_password \
--table \
order_item \
--where \
"gmtUpdated > '$d1' AND gmtUpdated < '$d2'" \
--driver \
'com.mysql.jdbc.Driver' \
--hive-import \
--target-dir \
/warehouse/test.db/imp_order_item/ \
--hive-table \
uniondrug_buf.imp_order_item \
--delete-target-dir
可能会遇到下面这个问题:
import_ord_order_item.sh: line 6: --username: command not found
其实–username并没有任何问题,这时候回去考虑jdbc那一行,看了好多遍,没问题呀!网上也查不出来~~(奇怪!)。仔细看jdbc那行,加上单引号(’),就可以了。(并不是所有的sqoop --connect下的 jdbc…都加单引号)。坑
正确示范:
--connect \
'jdbc:mysql://node3:33060/cn_uniondrug_middleend_ordercenter?zeroDateTimeBehavior=convertToNull' \
当我们用sqoop,并且采用query的时候,我们最好使用双引号,而且如果有where语句,必须加上“\CONDITIONS”,注意有“\”。