我的PostgreSQL安装在Windows上。如何将数据从MySQL数据库迁移到PostgreSQL?我读过很多文章。没有什么有用的:(
谢谢。
我的行为:
mysqldump -h 192.168.0.222 --端口3307 -u根-p -h=postgresql synchronizer >pgsql
C:\dump.sql
psql:C:/dump.sql:17:注意:表"Db_audit“不存在,跳过DROP表psql:C:/dump.sql:30: ERROR:在或附近出现语法错误"(”psql 2:"id“int(11) NOT NULL,^ psql:C:/dump.sql:37: ERROR:在" "Db_audit”“psql 1:LOCK TABLES”Db_audit“СТРОКА;^ psql:C:/dump.sql:39:错误:关系"Db_audit“不存在值1:插入到"Db_audit”值中(4068,4036,4,1,32,'2010-02-04 ... ^ psql:C:/dump.sql:40:错误:关系"Db_audit“不存在值1:插入到"Db_audit”СТРОКА(19730,2673,2,2,44,'2010-11-23...^ psql:C:/dump.sql:42: ERROR:语法错误在"UNLOCK“СТРОКА1:解锁表;^ psql:C:/dump.sql:48:注意:表"ZHNVLS“不存在,跳过DROP TABLE psql:C:/dump.sql:68: ERROR:语法错误"(”СТРОКА2:"id“int(10) unsigned NOT NULL,^ psql:C:/dump.sql:75: ERROR:语法错误在" "ZHNVLS”“СТРОКА1:LOCK TABLES”ZHNVLS“WRITE;^ psql:C:/dump.sql:77:警告:字符串文字СТРОКА1中转义的非标准用法:...?‘,'10','4607064820115','0','',’?- ??...^ПОДСКАЗКА:使用转义字符串语法进行转义,例如,E'\r\n‘。发送取消请求:C:/Dump.sql:77:警告:字符串文字СТРОКА1中的转义用法不是标准的:...?‘,'10','4602784001189','0','',’?...
618夏日盛惠
2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…
我使用MySQL -> Postgresql迁移的经历并不是很愉快,所以我不得不接受丹尼尔关于CSV文件的建议。
在我的示例中,我使用重新创建了模式 ,然后使用mysqldump和pg_restore逐个导入了所有表。
因此,虽然这种转储/恢复可能适用于数据,但您很可能不太熟悉模式。我还没有尝试过任何商业解决方案,所以看看其他人怎么说...祝好运!
更新:我查看了该过程留下的代码,以下是我实际是如何做到的。
我的PostgreSQL数据库中的模式稍有不同,因此一些表被联接,一些表被拆分。这就是为什么简单的导入不是一个选项,而我的案例可能比您所描述的更复杂,这个解决方案可能有点夸张。
对于PG数据库中的每个表,我编写了一个从MySQL数据库中选择相关数据的查询。如果两个数据库中的表基本相同,并且没有连接,则可以像下面这样简单
select * from mysql_table_name
然后,我将此查询的结果导出为XML,为此,您需要像这样运行它:
echo "select * from mysql_table_name" | mysql [CONNECTION PARAMETERS] -X --default-character-set=utf8 > mysql_table_name.xml
这将创建一个简单的XML文件,其结构如下:
<resultset statement="select * from mysql_table_name">