Sqoop:使用八进制值(\ 0)作为分隔符

由于我在其中一个字段中有特殊字符,因此我想使用较小的值作为分隔符。 Hive对分隔符(\ 0)可以正常工作,但sqoop会因NoSuchElement异常而失败。看起来它不会将分隔符检测为\ 0。Sqoop:使用八进制值( 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

回答:

你应该用\ 000作为分隔符时,它会生成字符作为分隔符。

回答:

在可以解决此问题的my sql conn字符串中将字符集设置为UTF 8。

mysql.url=jdbc:mysql://localhost:3306/nbs?useJvmCharsetConverters=false&useDynamicCharsetInfo=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&useEncoding=true 

以上是 Sqoop:使用八进制值(\ 0)作为分隔符 的全部内容, 来源链接: utcz.com/qa/262812.html

回到顶部