MySQL 到 PostgreSQL 表创建转换 - 字符集和排序规则

sni*_*ali 2 postgresql ddl

我想从 MySQL 迁移到 PostgreSQL。我对创建表的查询是这样的。

CREATE TABLE IF NOT EXISTS conftype 
(
  CType char(1) NOT NULL,
  RegEx varchar(300) default NULL,  
  ErrStr varchar(300) default NULL,
  Min integer default NULL,
  Max integer default NULL, 
  PRIMARY KEY (CType)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
Run Code Online (Sandbox Code Playgroud)

此查询的转换形式是什么。我对DEFAULT CHARSET=latin1 COLLATE=latin1_bin部分感到困惑 。我如何转换这部分?

Ant*_*ala 5

那意味着该仅使用 latin-1 (iso-8859-1) 字符集和 latin-1 二进制排序顺序。在 PostgreSQL 中,字符集是数据库范围的,没有在表级别设置它的选项。

您可以使用以下命令创建一个最兼容的数据库

 CREATE DATABASE databasenamegoeshere WITH ENCODING 'LATIN1' LC_COLLATE='C'
     LC_CTYPE='C' TEMPLATE=template0;
Run Code Online (Sandbox Code Playgroud)

但是,我个人认为 MySQL->PostgreSQL 端口也值得切换到 UTF-8/Unicode。