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