通过Sqoop将带有自定义分隔符的HDFS文件导出到Mysql中

Rai*_*nod 5 mysql hadoop hdfs sqoop

  • 我有这样的文件:

    1^%~binod^*~1^%~ritesh^*~1^%~shisir^*~1^%~budhdha^*~1^%~romika^*~1^%~rubeena^*~
    
    Run Code Online (Sandbox Code Playgroud)
  • 其中--input-fields-terminated-by'^%〜' - 输入行 - 终止 - 由'^*〜'.

  • 我试图通过命令导出:

    sqoop export --connect jdbc:mysql://localhost/sqoop --username root -P --table makalu --export-dir sqoop/makalu --input-fields-terminated-by '^%~' --input-lines-terminated-by '^*~'
    
    Run Code Online (Sandbox Code Playgroud)
  • 但它写了一行:

id|name
1|%~binod

在MySQL中.

  • 现在我的问题是解决这个问题的命令是什么.

Pra*_*ode 4

参数--input-fields-termminate-by--input-lines-termminate-by接受单个字符

当您在终端中执行导出命令时,您可以看到以下警告

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.
Run Code Online (Sandbox Code Playgroud)

更新:

我观察到的一件事是,如果行终止而不是 \n 或新行,那么在导出时它只会将一条记录插入数据库。我尝试了与字段和行终止的组合,但仅在行终止于 \n 的情况下将数据导出到 RDBMS 表中

甚至尝试使用--input-lines-termminate-by--lines-termminate-by参数,但没有运气。

我已经测试过了

Cloudera CDH-5.0.0-1
Sqoop version: 1.4.4-cdh5.0.0
Run Code Online (Sandbox Code Playgroud)

我唯一能找到的就是这个