mysql 我可以在postgresql数据库中导入sql转储吗

jyztefdp  于 2022-11-28  发布在  Mysql
关注(0)|答案(1)|浏览(173)

我有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转储导入数据吗?

oo7oh9g9

oo7oh9g91#

您可以尝试mysqldump的--compatible选项:

mysqldump --compatible=postgresql dbname > dbname.sql

根据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语法完全兼容,但它有很大帮助,有时可能是解决方案。

相关问题