Tob*_*ede 35 mysql migration postgresql load-data-infile
我正在考虑从MySQL切换到PostgreSQL.
使用PostgreSQL有什么提示,技巧和陷阱?
MySQLer应该注意什么?
另请参阅:PostgreSQL与MySQL有何不同?
另请参见:从MySQL迁移到PostgreSQL
注意 - 我不认为这是重复的.特别是答案的类型非常不同,这里的响应有更多的实现细节,这正是我所寻求的
rfu*_*sca 51
刚刚经历过这个,我还是......
INSERT IGNORE
和REPLACE
LOAD DATA INFILE
(COPY
很近,但不够近)autoincrement
到SERIAL
INNER JOIN
没有ON
条款就不会发生,使用CROSS JOIN
等等COUNT(*)
可能是疯狂的慢interval
与Postgres interval
(时间间隔)AS
CALL proc();
; 重写proc()
为一个功能和SELECT proc();
.这将是一项艰巨的任务,因为您必须测试整个代码库 - 在任何地方,每个查询
在操作上你需要看看:
在考虑此类举措之前,您肯定必须进行大量的性能测试.
这些成本使得迁移到不同的数据库对于大多数非常重要的应用而言过于昂贵.考虑一下非常小心的好处,以及完成上述所有工作的巨大成本.
如果你花了不到三个月的时间,在一个非常重要的应用程序中,我会感到惊讶,在此期间你将无法继续定期开发.
小智 6
我发现这个脚本将连接到你的MySQL数据库和你的PostgreSQL数据库,只是传输内容.它对我来说就像一个魅力.
https://github.com/philipsoutham/py-mysql2pgsql
安装者
$ pip install py-mysql2pgsql
Run Code Online (Sandbox Code Playgroud)
跑
$ py-mysql2pgsql
Run Code Online (Sandbox Code Playgroud)
在任何文件夹中,它将为您创建一个模板设置文件(mysql2pgsql.yml),您可以编辑该文件并输入数据库的详细信息.
我必须安装argparse才能工作.
$ pip install argparse
Run Code Online (Sandbox Code Playgroud)
填写数据库详细信息后,再次运行它
$ py-mysql2pgsql
Run Code Online (Sandbox Code Playgroud)
在与设置文件相同的文件夹中,wham,你就完成了.它没有在屏幕上打印任何内容,但之后我的数据库被完全复制了.
在转换之前,通过启动服务器将MySQL设置为ANSI严格性: - transaction-isolation = SERIALIZABLE --sql-mode = ANSI
确保您没有使用MyIsam表.
MySQL允许很多转换它不应该; pg将需要演员.
您的存储过程,函数和触发器必须重写.pg为您提供了这些语言的选择,但您必须安装这些语言; 它不像MySQL那样友好.
pg只允许在一个选择列表中允许组中的列或聚合; 如果你这样做,MySQL将通过选择组中的第一个值来作弊.
MySQL添加了一堆扩展:不等于运算符可以!=
像在C中一样,它允许'&&'作为'和'的同义词,'||' '或'等等.特别是,pg使用'||' 表示字符串连接.
基本上,pg非常严格ANSI,而MySQL则不是.我强烈建议在转换为pg之前让MySQL尽可能严格遵守ANSI标准,然后在运行应用程序时检查是否有任何警告.
归档时间: |
|
查看次数: |
18381 次 |
最近记录: |