在 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"
虽然我没有收到你的错误。希望对你有帮助。
我正在尝试执行这样的查询
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"
虽然我没有收到你的错误。希望对你有帮助。