Switching from MySQL to PostgreSQL - tips, tricks and gotchas?(从 MySQL 切换到 PostgreSQL - 提示、技巧和陷阱?)
问题描述
我正在考虑从 MySQL 切换到 PostgreSQL.
I am contemplating a switch from MySQL to PostgreSQL.
您在使用 PostgreSQL 时有哪些提示、技巧和注意事项?
What are your tips, tricks and gotchas for working with PostgreSQL?
MySQLer 应该注意什么?
What should a MySQLer look out for?
另请参阅:PostgreSQL 与 MySQL 有何不同?
另请参阅:从 MySQL 迁移到 PostgreSQLp>
See also: How different is PostgreSQL to MySQL?
See also: Migrate from MySQL to PostgreSQL
注意 - 我不认为这是重复的.特别是答案的类型非常不同,这里的响应有更多的实现细节,这正是我正在寻找的
推荐答案
我自己刚刚经历过,嗯,我还是……
Just went through this myself, well I still am...
- 区分大小写的文字
- 缺少
INSERT IGNORE和REPLACE - 几乎所有地方都需要显式转换
- 没有反引号
LOAD DATA INFILE(COPY已接近,但还不够接近)- 将
autoincrement更改为SERIAL - 虽然 MySQL 中的格式不好,但在 Postgres 中,不会发生没有
ON子句的INNER JOIN,请使用CROSS JOIN或喜欢 COUNT(*)可能会非常慢- 数据库是用字符集编码的,而不是表
- 您可以拥有多个数据库,具有多个架构(MySQL 确实只有一个数据库和多个架构)
- 分区不同
- MySQL
intervalvs. Postgresinterval(时间间隔) - 隐式列重命名,Postgres 需要
AS - 不能在 Postgres 中同时更新多个表
- Postgres 功能强大.所以没有
CALL proc();;将proc()重写为函数和SELECT proc();.
- Case sensitive text
- Lack of
INSERT IGNOREandREPLACE - Explicit casting needed almost everywhere
- No backticks
LOAD DATA INFILE(COPYis close, but not close enough)- Change
autoincrementtoSERIAL - Although bad form in MySQL, in Postgres, an
INNER JOINwithout anONclause can't happen, useCROSS JOINor the like COUNT(*)can be crazy slow- Databases are encoded with character sets, not tables
- You can have multiple databases, with multiple schemas (MySQL really has just one database and multiple schema)
- Partitioning is different
- MySQL
intervalvs. Postgresinterval(for time intervals) - Implicit column renaming, Postgres requires
AS - Cannot update multiple tables at the same time in Postgres
- Postgres functions are powerful. So there is no
CALL proc();; rewriteproc()as a function andSELECT proc();.
这篇关于从 MySQL 切换到 PostgreSQL - 提示、技巧和陷阱?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:从 MySQL 切换到 PostgreSQL - 提示、技巧和陷阱?
基础教程推荐
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 带更新的 sqlite CTE 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
