Эта запись кажется похожей, но пользователь указывает, что "long" - это зарезервированный ключ. Поэтому я думаю, что даже этот зарезервированный ключ вызывает некоторую проблему и задает его как новый вопрос.
Мне нужно использовать back-tick внутри сценария оболочки для выполнения запроса MySQL. Имя базы данных содержит дефис. Чтобы рассматривать все имя БД как единое, я заключил его в обратный тик. Но сценарий оболочки использует обратную галочку для подстановки команд. Таким образом, я избежал обратного галочки с "\". Ниже приведен результат.
CREATE TABLE reporting.details AS SELECT * FROM \`Temp-17-09-19\`.details;
Но я получаю следующую ошибку.
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'Temp-17-09-19.details 'не существует
Он рассматривал все "db-name.table_name" (Temp-17-09-19.details) как саму "таблицу". Я не понимаю, почему при выполнении запроса удаляются обратные метки, даже после их экранирования. Здесь мой контекст обхода обратной галочки только из сценария оболочки, а не из запроса MySQL.
Это выполнимо?
Обновление: По запросу @shellter ниже приведенополный сценарий оболочки. И оболочка, заключающая весь запрос в одинарную кавычку, также выдает ту же ошибку. Также замена обратной галочки одинарной кавычкой приводит к синтаксической ошибке MySQL.
#!/bin/sh
cd `dirname $0`
ROOT_PATH=`pwd`
java -Dtalend.component.manager.m2.repository=$ROOT_PATH/../lib -Xms256M -Xmx1024M -cp .:$ROOT_PATH:$ROOT_PATH/../lib/routines.jar:$ROOT_PATH/../lib/activation.jar:$ROOT_PATH/../lib/crypto-utils.jar:$ROOT_PATH/../lib/dom4j-1.6.1.jar:$ROOT_PATH/../lib/log4j-1.2.17.jar:$ROOT_PATH/../lib/mail-1.4.jar:$ROOT_PATH/../lib/mysql-connector-java-5.1.30-bin.jar:$ROOT_PATH/projtablesync_0_1.jar: local.projtablesync_0_1.projTableSync --context=Default --context_param Email_To="username@gmail.com" --context_param Email_From="proj@gmail.com" --context_param Email_Cc="user2@gmail.com" --context_param smtp="smtp.gmail.com" --context_param processName="Tag" --context_param dropTempTableQry="drop table if exists reporting.details;" --context_param createTempTableQry="CREATE TABLE reporting.details AS SELECT * FROM \`Temp-17-09-19\`.details;" --context_param updateFinalTableQry="UPDATE reporting.details AS a INNER JOIN reporting.details AS b ON a.tag_id = b.tag_id AND a.seq_id = b.seq_id SET a.tag_submit_date = b.tag_submit_date, a.tag = b.tag, a.tag_update_date = b.tag_update_date, a.fail_code = b.fail_code, a.is_priority = b.is_priority, a.mobile_platform = b.mobile_platform, a.status = b.status, a.target_countries = b.target_countries, a.content_type = b.content_type, a.status_code = b.status_code, a.status_code_description = b.status_code_description;" --context_param insertFinalTableQry="INSERT INTO reporting.details SELECT a.* FROM reporting.details AS a LEFT JOIN reporting.details AS b ON a.Seq_id = b.Seq_id AND IFNULL(a.tag_id, \"\") = IFNULL(b.tag_id, \"\") WHERE b.seq_id IS NULL;"
Спасибо.