从MYSQL到PostgreSQL的迁移

从MYSQL到PostgreSQL的迁移,mysql,postgresql,Mysql,Postgresql,我只想将我的应用程序从MYSQL迁移到PostgreSQL。我被困在某一点上 CREATE TABLE some_table ( sequenceNumOnTarget BIGINT NOT NULL, streamStartTime BIGINT, intervalStartTime BIGINT NOT NULL, intervalNumber SMALLINT, intervalDurati

我只想将我的应用程序从MYSQL迁移到PostgreSQL。我被困在某一点上

CREATE TABLE some_table 
(
  sequenceNumOnTarget        BIGINT NOT NULL,
  streamStartTime            BIGINT,
  intervalStartTime          BIGINT NOT NULL,
  intervalNumber             SMALLINT,
  intervalDuration           INTEGER,
  lastReport                 TINYINT,
  macAddr                    VARCHAR(20) NOT NULL,
  directoryNumber            VARCHAR(30),
  subnetMask                 VARCHAR(20),
  subnetAddress              VARCHAR(20),
  ipAddress                  VARCHAR(20),
  icpName                    VARCHAR(20),
  udpPort                    INTEGER NOT NULL,
  tcpPort                    INTEGER,
  endpointContext            SMALLINT,
  endpointType               SMALLINT,
  farEndIpAddress            VARCHAR(20),
  farEndMacAddr              VARCHAR(20),
  farEndDirectoryNumber      VARCHAR(30),
  farEndUdpPort              INTEGER,
  farEndTcpPort              INTEGER,
  farEndType                 SMALLINT,
  farEndSubnet               VARCHAR(20),
  farEndIcpName              VARCHAR(20),
  codec                      SMALLINT,
  packetsReceived            BIGINT,
  DELAY INTEGER,
  jitterRfc1889              INTEGER,
  averageJitter              INTEGER,
  jitterHist0                INTEGER,
  jitterHist1                INTEGER,
  jitterHist2                INTEGER,
  jitterHist3                INTEGER,
  jitterHist4                INTEGER,
  jitterHist5                INTEGER,
  jitterHist6                INTEGER,
  jitterHist7                INTEGER,
  jitterBufferOverflow       BIGINT,
  jitterBufferUnderflow      BIGINT,
  jitterBufferAverageDepth   INTEGER,
  jitterBufferMaxDepth       INTEGER,
  packetLoss                 BIGINT,
  packetLossMaxBurst         BIGINT,
  packetLossHist0            INTEGER,
  packetLossHist1            INTEGER,
  packetLossHist2            INTEGER,
  packetLossHist3            INTEGER,
  packetLossHist4            INTEGER,
  packetLossHist5            INTEGER,
  packetLossHist6            INTEGER,
  packetLossHist7            INTEGER,
  packetsOutOfOrder          BIGINT,
  maxJitter                  BIGINT,
  networkMos                 INTEGER,
  userMos                    INTEGER,
  pollId                     BIGINT,
  instance                   VARCHAR(100),
  ttime                      BIGINT NOT NULL,
  PRIMARY KEY (sequenceNumOnTarget,macAddr,udpPort), 
  INDEX vq_subnet(subnetAddress),
  INDEX vq_ttime(ttime), 
  INDEX vq_pollid(pollId),
  INDEX vq_sequence(sequenceNumOnTarget),
  INDEX vq_icp(icpName)
);
这是我在MySQL中的表定义,现在我想将其转换为PostgreSQL

但在PostgreSQL中找不到适合“用一个查询同时创建表和索引”的DDL语句


有人能帮忙吗?

我认为您不能在PostgreSQL中添加索引(除了那些隐式创建以强制执行唯一和主键约束的索引)作为CREATE TABLE语句的一部分

然而,没有真正的必要这样做。如果您想确保索引是在任何人可以看到(并因此使用)表之前创建的,那么只需在单个事务中创建表和索引,并且仅在准备使用表时提交事务


这在MySQL中不起作用,因为模式更改发生在任何事务之外,即使使用通常支持它们的引擎。不过,它应该在PostgreSQL中工作。

我不相信您可以在PostgreSQL中添加索引(除了那些隐式创建以强制执行唯一和主键约束的索引)作为CREATE TABLE语句的一部分

然而,没有真正的必要这样做。如果您想确保索引是在任何人可以看到(并因此使用)表之前创建的,那么只需在单个事务中创建表和索引,并且仅在准备使用表时提交事务


这在MySQL中不起作用,因为模式更改发生在任何事务之外,即使使用通常支持它们的引擎。但是,它应该在PostgreSQL中工作。

如果可以将表达式拆分为单独的表达式进行创建和索引定义,则迁移应该简单。

如果可以将表达式拆分为单独的表达式进行创建和索引定义,则迁移应该简单。

PostgreSQL而不是PostgreSQL;)PostgreSQL不是PostgreSQL;)关于在单个事务中创建表和索引的好观点关于在单个事务中创建表和索引的好观点在应用程序中我不能,只能在函数中传递一个参数,此参数是包含此查询的字符串,还有许多其他依赖项。在应用程序中我不能,函数中只能传递一个参数,该参数是一个包含此查询的字符串,还有许多其他依赖项。