Sqoop导入替换mysql的特殊字符
在mysql中,我有1000个表,每个表中有超过100000条记录。这些表有300-500列 有些表的列具有特殊字符,如列名中的.dot和space 现在,我想执行sqoop导入,并在一个单发查询中在HDFS中创建一个配置单元表,如下所示Sqoop导入替换mysql的特殊字符,mysql,hive,special-characters,sqoop,Mysql,Hive,Special Characters,Sqoop,在mysql中,我有1000个表,每个表中有超过100000条记录。这些表有300-500列 有些表的列具有特殊字符,如列名中的.dot和space 现在,我想执行sqoop导入,并在一个单发查询中在HDFS中创建一个配置单元表,如下所示 sqoop import --connect ${domain}:${port}/$(database) --username ${username} --password ${password}\ --table $(table) -m 1 --hive-i
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)
在此之后,将创建配置单元表,但当我查询该表时,它显示错误为
此错误输出是一个示例输出
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导入时,如何用_下划线替换.dot。我想动态地这样做 使用sqoop import\with-query选项,而不是-table和in-query Use函数
即
sqoop导入-连接${domain}:${port}/$数据库-用户名${username}-密码${password}\
-查询“选择列1,替换列2”,“作为表中的列”
或者不建议编写一个可以查找和替换的shell脚本。到Grep commandat/user/hive/warehouse/${hivedatabase}.db/$table我尝试了-Query选项,但使用select Query替换了许多列名,这就是我的问题所在。请原谅我也问了一些可能的问题。我对Hadoop有点陌生。我如何使用信息架构编写动态查询。列您可以获得列名和列数据类型,并对“char”的列数据类型有偏见,“varchar”使用Repace函数。。。。