当查询单元外部表时,Null值显示为'\N‘。
下面是sqoop导入脚本:
sqoop导入-libjars /usr/lib/sqoop/lib/tdgssconfig.jar,/usr/lib/sqoop/lib/terajdbc4.jar -Dmapred.job.queue.name=xxxxxx \-connection jdbc4.jar-Dmapred.job.queue.name=xxxxxx://xxx.x.xx.xx/ LOGMECH=LDAP =$db,LOGMECH=LDAP-连接管理器org.apache.sqoop.teradata.TeradataConnManager \-用户名$user -密码$pwd -查询“ 从col1、col2、col3中选择$db.xxx 其中\$条件“\-空-字符串'\N‘-空-非字符串'\N’\-字段-结束-由'\t‘-num-映射器6\-拆分-被job_number \-删除-目标-dir\-目标-dir $hdfs_loc
请建议对脚本进行哪些更改,以便在查询外部单元表时将空值显示为空。
发布于 2016-10-27 23:22:29
Sathiyan-以下是我经过多次试验后的发现
(--null-string '\N')属性,那么NULL将存储为整数列和字符串列的'\N'。发布于 2016-10-27 17:13:29
在sqoop脚本中,您提到了--null-string '\N' --null-non-string '\N,意思是,
--null-string '\N' = The string to be written for a null value for string columns
--null-non-string '\N' = The string to be written for a null value for non-string columns发布于 2019-06-30 11:32:25
如果表中的任何值为空,并且我们想要对该表进行sqoop,那么sqoop将在HDFS中将空值作为字符串null导入。因此,这将导致使用hive在查询中使用Null条件的问题。
例如:-让我们将空值插入mysql表“城市”。
mysql> insert into cities values(6,7,NULL);默认情况下,Sqoop将以字符串null的形式在HDFS中导入空值。
让sqoop看看会发生什么:-
sqoop import –connect jdbc:mysql://localhost:3306/sqoop –username sqoop -P –table cities –hive-import –hive-overwrite –hive-table vikas.cities -m 1http://deltafrog.com/how-to-handle-null-value-during-sqoop-import-export/
https://stackoverflow.com/questions/40290383
复制相似问题