在 Sqoop 自由格式查询中使用 MySQL 函数

Use MySQL functions in Sqoop free-form query

我正在尝试执行这样的查询

SELECT replace(name, '[=11=]', '') FROM example

在 sqoop 中使用参数 --query

--query "select replace(name, '\0', '')" from example e

但是这种方法返回了错误

ERROR tool.ImportTool: Imported Failed: No column by the name namefound while importing data; expecting one of [id, REPLACE_name___0_____]

知道如何解决这个问题吗?

首先,您需要将 SQL 语句正确地括起来。然后你需要用“/”转义“\”字符。

请检查以下对我有用的内容:

sqoop import \
  --connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \
  --username=retail_dba \
  --password=cloudera \
  --query "select replace(department_name, '/[=10=]', '*') from departments  where 1=1 and $CONDITIONS" \
  --split-by "department_name" \
  --target-dir "/km/op_sqoop/dept_names" \
  -m 1

评估也有效:

sqoop eval \
  --connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \
  --username retail_dba \
  --password cloudera \
  --query "select department_id, department_name, replace(department_name, '/[=11=]', '*') from departments"

虽然我没有收到你的错误。希望对你有帮助。