我在MySQL
中使用了如下所示的查询。我得到了我想要的结果。
select TABLE_NAME,count(column_name) as no_of_columns from information_schema.columns where TABLE_SCHEMA = 'testing' and TABLE_NAME NOT REGEXP 'temp|bkup|RemoveMe|test' group by TABLE_NAME
当我在sqoop import语句中使用相同的查询时,结果会有所不同。
sqoop
导入语句如下。
sqoop import --connect jdbc:mysql://xxxxxx:3306/information_schema --username xxxxx --password-file /user/xxxxx/passwds/mysql.file --query "select TABLE_NAME,count(column_name) as no_of_columns from information_schema.columns where TABLE_SCHEMA = 'testing' and TABLE_NAME NOT REGEXP 'temp|bkup|RemoveMe|test' group by TABLE_NAME and \$CONDITIONS" -m 1 --target-dir /user/hive/warehouse/xxxx.db/testing_columns --outdir /home/xxxxx/logs/outdir
为什么会发生这种情况,我该怎么办才能获得理想的结果
答案 0 :(得分:1)
$CONDITIONS
令牌必须位于WHERE
子句中:
sqoop import --connect jdbc:mysql://xxxxxx:3306/information_schema \
--username xxxxx --password-file /user/xxxxx/passwds/mysql.file \
--query "select TABLE_NAME,count(column_name) as no_of_columns \
from information_schema.columns \
where TABLE_SCHEMA = 'testing' \
and TABLE_NAME NOT REGEXP 'temp|bkup|RemoveMe|test' \
and \$CONDITIONS \
group by TABLE_NAME" \
-m 1 --target-dir /user/hive/warehouse/xxxx.db/testing_columns \
--outdir /home/xxxxx/logs/outdir
还要考虑根据Sqoop User Guide:
在当前版本的Sqoop中使用自由格式查询的功能 仅限于没有模棱两可的预测的简单查询
OR
子句中没有WHERE
个条件。使用复杂的查询等 作为具有子查询或联接的查询导致模糊不清 预测会导致意想不到的结果。