是这样的mysql里有5个列,包含一个timestamp类型的列,默认值是CURRENT_TIMESTAMP这个列简单来说就是更新插入数据时候他会自己动加入系统当前的时间,所以说设置为不为null..
需求是这样的hive里只有4个列,现在用sqoop从hive抽取数据导入到mysql
4个列到mysql里正常显示,最后一个列使用mysql的timestamp这个列的默认值(就是这条数据同步到mysql的时间,或者以后做出修改后的时间)
脚本
sqoop export --connect "jdbc:mysql://$jdbc_mysql_url/$jdbc_mysql_database?useUnicode=true&characterEncoding=utf-8" \
--username $jdbc_mysql_username --password $jdbc_mysql_password \
--table efficiency_output_day --fields-terminated-by '\024' --lines-terminated-by '\n' \
--update-key "cardid,start_time,factory_no" --update-mode allowinsert \
--export-dir /user/hive/warehouse/etl_mes.db/etl_mes_zz_efficiency_output_day/000000_0
情况1:设置mysql timestamp设置为可以为:null 的话,导入数据可以导入,但是timestamp这列的值就是null
情况2:给hive表也增加一个列,但是不赋值,这样做报null指针异常
情况3: mysql timestamp设置为不为null 报错,输出的列不匹配
hive数据可以同步导入到mysql,然后timestamp列默认值取当前时间