因为我在其中一个字段中有特殊的字符,所以我想使用较低的值作为分隔符。配置单元使用分隔符(\0)可以正常工作,但是sqoop失败,没有uchelement异常。似乎没有将分隔符检测为\0。
这就是我的配置单元sqoop脚本的样子。请帮忙。
CREATE TABLE SCHEMA.test
(
name CHAR(20),
id int,
dte_report date
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\0'
LOCATION '/user/$USER/test';
sqoop-export \
-Dmapred.job.name="TEST" \
-Dorg.apache.sqoop.export.text.dump_data_on_error=true \
--options-file ${OPTION_FILE_LOCATION}\conn_mysql \
--export-dir /user/$USER/test \
--input-fields-terminated-by '\0' \
--input-lines-terminated-by '\n' \
--input-null-string '\\N' \
--input-null-non-string '\\N' \
--table MYSQL_TEST \
--validate \
--outdir /export/home/$USER/javalib
在vi编辑器中,分隔符看起来像“^@”,对于od-c,分隔符是\0
2条答案
按热度按时间lndjwyie1#
在可以解决此问题的mysqlconn字符串中将字符集设置为utf8。
a0x5cqrl2#
您应该使用\000作为分隔符,它将生成该字符作为分隔符。