#postgresql #database-migration #quoted-identifier
Вопрос:
У меня есть старый файл sql с резервной `
копией. Когда я пытаюсь загрузить его через psql dbname lt; db_backup.sql
, я получаю сообщение об ошибке:
ERROR: syntax error at or near "`" DROP TABLE IF EXISTS `tablename`;
Есть ли способ сказать psql, как к нему относиться `
'
?
Комментарии:
1. Обратные ссылки недопустимы в идентификаторе SQL в стандартном SQL и Postgres. Если вам вообще нужно будет сделать так, чтобы они рассматривались как двойные кавычки:
"
потому что именно это стандарт SQL использует для цитирования идентификаторов. Вам нужно заменить страшные обратные ссылки двойными кавычками. Но если этот файл является резервной копией MySQL, там будет гораздо больше, что нуждается в адаптации к Postgres.
Ответ №1:
Вы должны создать дамп с помощью mysqldump --compatible=ansi
, чтобы избежать этой и других несовместимостей миграции. Я предлагаю вам создать отдельную базу данных MySQL, используя существующую резервную копию, как она есть, а затем создать дамп с этой опцией, чтобы сделать ее совместимой.