Sqoop Import 替换 mysql 的特殊字符
Sqoop Import replace special characters of mysql
我有 1000 个 table,每个 table 中有超过 100000 条记录 mysql。 table 有 300-500 列。
某些 table 的列名称中包含特殊字符,例如 .(点)和 space。
现在我想在 HDFS 中执行 sqoop 导入并创建一个配置单元 table,如下所示
sqoop import --connect ${domain}:${port}/$(database) --username ${username} --password ${password}\
--table $(table) -m 1 --hive-import --hive-database ${hivedatabase} --hive-table $(table) --create-hive-table\
--target-dir /user/hive/warehouse/${hivedatabase}.db/$(table)
在此之后创建了配置单元 table 但是当我查询 table 它显示错误为
此错误输出是示例输出。
Error while compiling statement: FAILED: RuntimeException java.lang.RuntimeException: cannot find field emp from [0:emp.id, 1:emp.name, 2:emp.salary, 3:emp.dno]
我们如何在执行 sqoop 导入时将 .(点)替换为 _(下划线)。我想动态地做到这一点。
使用带有 --query 选项而不是 --table 的 sqoop import \ 并在查询中使用 replace 函数。
即
sqoop import --connect ${domain}:${port}/$(database) --username ${username} --password ${password}\
-- query 'Select col1 ,replace(col2 ,'.','_') as col from table.
或者(不推荐) 写一个 shell 脚本来查找和替换“.”到 /user/hive/warehouse/${hivedatabase}.db/$(table)
处的“_”(Grep 命令)
我有 1000 个 table,每个 table 中有超过 100000 条记录 mysql。 table 有 300-500 列。
某些 table 的列名称中包含特殊字符,例如 .(点)和 space。
现在我想在 HDFS 中执行 sqoop 导入并创建一个配置单元 table,如下所示
sqoop import --connect ${domain}:${port}/$(database) --username ${username} --password ${password}\
--table $(table) -m 1 --hive-import --hive-database ${hivedatabase} --hive-table $(table) --create-hive-table\
--target-dir /user/hive/warehouse/${hivedatabase}.db/$(table)
在此之后创建了配置单元 table 但是当我查询 table 它显示错误为
此错误输出是示例输出。
Error while compiling statement: FAILED: RuntimeException java.lang.RuntimeException: cannot find field emp from [0:emp.id, 1:emp.name, 2:emp.salary, 3:emp.dno]
我们如何在执行 sqoop 导入时将 .(点)替换为 _(下划线)。我想动态地做到这一点。
使用带有 --query 选项而不是 --table 的 sqoop import \ 并在查询中使用 replace 函数。
即
sqoop import --connect ${domain}:${port}/$(database) --username ${username} --password ${password}\ -- query 'Select col1 ,replace(col2 ,'.','_') as col from table.
或者(不推荐) 写一个 shell 脚本来查找和替换“.”到 /user/hive/warehouse/${hivedatabase}.db/$(table)
处的“_”(Grep 命令)