当查询配置单元外部表时,Null
值显示为'\ N'。
下面是sqoop导入脚本:
sqoop import -libjars /usr/lib/sqoop/lib/tdgssconfig.jar,/usr/lib/sqoop/lib/terajdbc4.jar-Dmapred.job.queue.name = xxxxxx \ --connect jdbc:teradata://xxx.xx.xxx.xx/DATABASE=$db,LOGMECH=LDAP --connection-manager org.apache.sqoop.teradata.TeradataConnManager \ --username $ user --password $ pwd --query“
从$ db.xxx
中选择col1,col2,col3其中\ $ CONDITIONS“\ --null-string'\ N' - null-non-string'\ N'\ --fields-terminated-by'\ t' - num-mappers 6 \ --split-by job_number \ --delete-target-dir \ --target-dir $ hdfs_loc
请告知应对脚本进行哪些更改,以便在查询外部配置单元表时将空值显示为空。
答案 0 :(得分:7)
Sathiyan-以下是经过多次试验后的调查结果
(--null-string '\N')
属性,则NULL将存储为整数和字符串列的[' \ N' ]。答案 1 :(得分:2)
在您的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
答案 2 :(得分:1)
如果表中的任何值为NULL,而我们要对该表进行sqoop,则sqoop将在HDFS中将NULL值作为字符串(
SELECT
'choose' label,
'' id
FROM
table_events
LIMIT
1
)
UNION
(
SELECT
CONCAT(
title_clang_1,
' - ',
street,
' ',
zip,
' ',
district,
' ',
town,
' ',
additional
) label,
id
FROM
table_events
WHERE
offline IS NULL || offline = '|0|'
)
导入。因此,使用蜂巢在查询中使用空条件会产生问题
例如:–将NULL值插入mysql表“ city”。
null
默认情况下,Sqoop会将NULL值作为字符串mysql> insert into cities values(6,7,NULL);
导入HDFS中。
让我们蹲下来看看会发生什么:–
null
http://deltafrog.com/how-to-handle-null-value-during-sqoop-import-export/
答案 3 :(得分:0)
在 sqoop 导入命令中删除 --null-string 和 --null-non-string '\N' 选项。 默认情况下,系统将为字符串和非字符串值分配 null。
我尝试过 --null-string '\N' 和 --null-string '' 和其他选项,但得到空白和不同的问题。