实际上,我需要从 postgresql 生成的 SQL 文件中填充 MySQL 数据库
pg_dump dbname > myfile.sql
所以,如果我尝试这样做
mysql> source myfile.sql
这显然是行不通的。虽然它确实填充了 70% 的表格,但我想知道有没有办法实现它?
从 postgresql 的源文件中,我可以获取并填充我的 MySql 数据库。
实际上,我需要从 postgresql 生成的 SQL 文件中填充 MySQL 数据库
pg_dump dbname > myfile.sql
所以,如果我尝试这样做
mysql> source myfile.sql
这显然是行不通的。虽然它确实填充了 70% 的表格,但我想知道有没有办法实现它?
从 postgresql 的源文件中,我可以获取并填充我的 MySql 数据库。
如果要将数据和结构从 postgres 表迁移到 mysql 等价物,最简单的方法是使用数据库转换工具,例如:ESF Data Migration Toolkit或开源对应的openDBCopy。
如果你不想或者你不能使用迁移工具,而你只需要迁移数据,另一种简单的方法是从 PostgreSQL 以 CSV 格式导出数据,然后将其导入 MySQL,这样你就可以用一些像这样的命令:
在 Postgres(导出)上:
COPY (SELECT query) TO '/path to csv file -*.csv';
在 Mysql 上(导入):
load data infile 'path to csv file-*.csv' into table tablename fields terminated by ',' lines terminated by '\n' .
如果您仍然想继续使用转储工具(pg_dump),您可以添加此选项以生成 MySQL 可以更好地理解的转储文件:
-d --data-only --no-owner --no-acl --attribute-inserts --disable-dollar-quoting --no-tablespaces
请记住,根据源数据库的结构,您可能必须操作转储文件以允许 MySQL 理解生成的转储文件......
在不丢失数据的情况下进行迁移的最佳方法是使用 Mysql Workbench 迁移。本教程解释了如何进行迁移。我发现教程中没有提到的一些重要的事情如下:
注意:使用“PostgreSQL ANSI(x64)”作为驱动程序在迁移时会出错。可能是因为我的数据包含 unicode 字符。