通过sqoop将带有自定义分隔符的hdfs文件导出到mysql中

cpjpxq1n  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(397)

我有这样的文件:

1^%~binod^*~1^%~ritesh^*~1^%~shisir^*~1^%~budhdha^*~1^%~romika^*~1^%~rubeena^*~

其中--输入字段以“^%~”结尾--输入行以“^*~”结尾。
我试图通过命令导出:

sqoop export --connect jdbc:mysql://localhost/sqoop --username root -P --table makalu --export-dir sqoop/makalu --input-fields-terminated-by '^%~' --input-lines-terminated-by '^*~'

但它只写了一行:

id|name
1|%~binod

在mysql中。
现在我的问题是解决这个问题的命令是什么。

yi0zb3m4

yi0zb3m41#

参数--输入字段以“单引号中的任何分隔符”结尾。在这种情况下也不要使用--direct,因为它会覆盖分隔符。显然,您需要在mysql中创建一个表,其默认分隔符是','

gg0vcinb

gg0vcinb2#

参数--以和结尾的输入字段--以单个字符结尾的输入行
在终端中执行导出命令时,可以看到以下警告

02/03 18:55:21 WARN sqoop.SqoopOptions: Character argument ^%~ has multiple characters; only the first will be used.
15/02/03 18:55:21 WARN sqoop.SqoopOptions: Character argument ^*~ has multiple characters; only the first will be used.

更新:

我观察到的一件事是,如果行不是终止于\n或新行,那么在导出时它只会将一条记录插入数据库。我尝试了两种与字段和行终止的组合,但只有在行终止的情况下,数据才会导出到rdbms表中
甚至尝试了--输入行以和结尾--行以参数结尾,但没有成功。
我已经测试过了

Cloudera CDH-5.0.0-1
Sqoop version: 1.4.4-cdh5.0.0

我唯一能找到的就是这个。

相关问题