我有mysql转储localhost.sql。但当我尝试将其导入postgresql数据库时,我收到如下错误:
psql:localhost.sql:10: ERROR: unrecognized configuration parameter "sql_mode"
psql:localhost.sql:11: ERROR: unrecognized configuration parameter "autocommit"
START TRANSACTION
psql:localhost.sql:13: ERROR: unrecognized configuration parameter "time_zone"
psql:localhost.sql:24: ERROR: syntax error at or near "NOT"
LINE 1: CREATE DATABASE IF NOT EXISTS `peoplfv0_WPGHJ` DEFAULT CHARA...
^
psql:localhost.sql:25: ERROR: syntax error at or near "USE"
LINE 1: USE `peoplfv0_WPGHJ`;
^
psql:localhost.sql:39: ERROR: syntax error at or near "`"
LINE 1: CREATE TABLE `dl_affiliates` (
^
psql:localhost.sql:47: ERROR: syntax error at or near "`"
LINE 1: INSERT INTO `dl_affiliates` (`affiliates_id`, `affiliates_na...
^
psql:localhost.sql:65: ERROR: syntax error at or near "`"
LINE 1: CREATE TABLE `dl_artist` (
^
psql:localhost.sql:94: ERROR: syntax error at or near "`"
我可以将这个sql转储转换为postgresql格式以从mysql转储导入数据吗?
1条答案
按热度按时间oo7oh9g91#
您可以尝试mysqldump的
--compatible
选项:根据MySQL文档:
--兼容=名称
产生与其他数据库系统或旧版MySQL服务器更相容的输出。name的值可以是ansi,mysql 323,mysql 40,postgresql,oracle,mssql,db2,maxdb,no_key_options,no_table_options或no_field_options。若要使用多个值,用逗号分隔它们。这些值与用于设置服务器SQL模式的相应选项具有相同的含义。请参见第5.1.10节“服务器SQL模式”。
此选项不保证与其他服务器的兼容性。它只启用当前可用于使转储输出更兼容的那些SQL模式值。例如,--compatible=oracle不将数据类型Map到Oracle类型或使用Oracle注解语法。
正如文档所说,它不能保证与Postgres语法完全兼容,但它有很大帮助,有时可能是解决方案。