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
interval
vs. Postgresinterval
(时间间隔) - 隐式列重命名,Postgres 需要
AS
- 不能在 Postgres 中同时更新多个表
- Postgres 功能强大.所以没有
CALL proc();
;将proc()
重写为函数和SELECT proc();
.
- Case sensitive text
- Lack of
INSERT IGNORE
andREPLACE
- Explicit casting needed almost everywhere
- No backticks
LOAD DATA INFILE
(COPY
is close, but not close enough)- Change
autoincrement
toSERIAL
- Although bad form in MySQL, in Postgres, an
INNER JOIN
without anON
clause can't happen, useCROSS JOIN
or 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
interval
vs. 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 - 提示、技巧和陷阱?
基础教程推荐
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- Sql Server 字符串到日期的转换 2021-01-01