У меня есть таблица int
в MySQLТаблицы имена как зарезервированные ключевые слова в Sqoop
create table `int` (c1 varchar(20));
insert into `int` values ('some data');
Я пытаюсь импортировать его в улей с помощью Sqoop:
sqoop import --connect='jdbc:mysql://xxx.xxx.xxx.xxx/classicmodels' --driver com.mysql.jdbc.Driver --username xxx --password xxx --table int --delete-target-dir --target-dir /tmp/test --hive-import --hive-table default.test --hive-drop-import-delims --null-string '\\N' --null-non-string '\\N' --split-by col_date -m 1 --verbose
Внутренне, он создает SELECT t.* FROM int AS t WHERE 1=0
Ошибка:
16/08/18 13:43:20 ERROR manager.SqlManager: Error executing statement: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'int AS t WHERE 1=0' at line 1
который ожидается.
Я пробовал, --table "int"
, --table `int`
и --table "`int`"
.
Ни один из них не работал.
Есть ли способ сказать sqoop создать запрос:
SELECT t.* FROM `int` AS t WHERE 1=0
[ ]
используется для обхода зарезервированных слов в сервере SQL.
В SQL Server --table dbo.[int]
работал для меня.
он не может избежать двойных кавычек, но мне нужно убежать ** '**, так что это сработало. Обновите свой ответ –
Спасибо за проверку –