数据中特殊字符反斜杠“\”与空值“\N”矛盾的问题
情况1、数据直接入hive表(加如下参数)
--hive-import \
--hive-database lake_ic \
--hive-table company_justice_unfreeze \
现象:
mysql中的数据含反斜杠"",如"张玉清\刘加良\夏国华", 通过sqoop导入hive表,null值设为\N(加如下参数),
--null-string '\\N' \
--null-non-string '\\N'
通过hive表查询入文件,再通过mysqlimport从文件导入mysql,文件中数据为"张玉清\刘加良\夏国华",空值为"\N";mysql中数据变为"张玉清刘加良夏国华",空值正常为Null;
情况2、数据不写入hive表,直接写入hdfs文件
设置转义字符、换行符、定界符
--escaped-by \\ \
--fields-terminated-by '\t' \
--lines-terminated-by '\n'
现象:
mysql中的数据含反斜杠"",如"张玉清\刘加良\夏国华", 通过sqoop导入hdfs文件,null值设为\N(加如下参数),
--null-string '\\N' \
--null-non-string '\\N'
hdfs文件关联hive表查询入文件,再通过mysqlimport从文件导入mysql,文件中数据为"张玉清\刘加良\夏国华",空值为"\\N";MySQL中数据为"张玉清\刘加良\夏国华",空值为"\N";
解决办法:
单独写一个脚本将情况2中文件里的空值"\\N"转换成"\N",再通过mysqlimport导入MySQL,数据正常.