2016-08-18 4 views
0

У меня есть таблица 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] работал для меня.

ответ

0

Предоставить --table \`int\`. Я помню, что работала вот так.

+0

он не может избежать двойных кавычек, но мне нужно убежать ** '**, так что это сработало. Обновите свой ответ –

+0

Спасибо за проверку –

 Смежные вопросы

  • Нет связанных вопросов^_^