将你的网站从MySQL改为PostgreSQL

掌门湖南

掌门湖南

2016-01-29 14:51

将你的网站从MySQL改为PostgreSQL,将你的网站从MySQL改为PostgreSQL

我的站点最初是采用PHP驱动,由MySQL数据库支持的方案,这在当时是一个明智的方案。在2001年夏天,我将我的数据库换成了PostgreSQL(有时也简称为Postgres)。

这个教程分为两部分,第一部分讲述了我进行这种转换的动机,并一步步地解释了如何将已存在有MySQL的数据转换到Postgres中。第二部分将会解释如何根据新的数据库系统对PHP进行相应的调整。

转换的动机

我第一次了解Postgres是在PHPBuilder网站的一篇文章中。这篇文章将Postgres和MySQL进行了比较,当时我正在使用 MySQL。但是,当我阅读了这篇文章后,我对Postgres着了迷 -- 但是当时我还没有想到对我的网站进行重新的设计。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/mysql/)

我继续使用MySQL,因为我的主机提供商只能提供MySQL的支持,这是我所无法改变的。直到有一天,主机提供商的主机崩溃了。我立即换了一个主机提供商,与原来的那个相比,新的主机提供商有很多不同,他们在安全性和稳定性方面对我作出了更多的承诺。新公司试图说服我使用Postgres,因为 Postgres要比MySQL来得更稳定,但是我当时没有接受这个建议,因为我的网站已经根据MySQL完成了全部的编码工作。他们只好专门为我的站点安装了MySQL。于是问题开始了。

我的第一个工作是将旧服务器上的MySQL的数据拷贝到新的主机上。首先,我将已有的数据dump到一个SQL文件中,然后在新的主机上导入这个SQL文件。在处理这个数千行的文件时,MySQL迅速地崩溃了。重启MySQL后,其中大概只有一半数据成功地导入了,而且MySQL只能间歇性地工作。最后,他们不得不删除了已经导入的信息让我再试一次。MySQL再次崩溃。这种情况重复了好几次,直到最终我决定将我的SQL文件分割成几块。我不得不又试了几次,最后终于将绝大多数的数据都成功地导入到新的MySQL服务器中。一切都好了,我总算松了一口气。

在下面的几个月中,MySQL几乎每两周都要崩溃一次,其中最惨痛的一次是在2001年6月底。这一次,存储在MySQL中的数据完全被毁坏了。我有一个 SQL的备份文件,但是因为上次向MySQL中导入大量数据的痛苦的经历,这一次我再也不想通过这个备份恢复数据了。这时,公司再次建议我对我的网站进行转向,使用Postgres。由于MySQL的失败,最终我接受了这个建议。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/mysql/)

将数据从MySQL转移到Postgres中

将数据从MySQL转移到Postgres是一个不大的挑战,因为Postgres比MySQL支持了更多的SQL的标准格式,在POstgres中直接使用SQL的dump结果是不可能的。但是,SQL语法相当相似,因此对于我来说,这并没有花费太多的时间。

对MySQL的Dump结果进行转换

首先,要求你的主机提供商为你的帐号建立一个数据库。和MySQL数据库一样,Postgres的数据库也由一系列包含实际数据的数据表组成。然后,使用mysqldump命令为你的MySQL数据库做一个dump文件。

  mysqldump -u username -p databasename  sqldump.txt

使用FTP将整个dump文件下载下来。现在在你的计算机上有了这个SQL文件,你可以将其转换成Postgres可以导入的文件。

首先,从dump文件中剪切所有的MySQL的CREATE TABLE查询,并将其粘贴到一个单独的文本文件中。下一步是使用Postgres可以理解的语言重新对数据表进行定义。

Postgres建立表的SQL和MySQL非常类似,但不完全一样。下面是一个例子:

  CREATE TABLE practicetable  {  someID SERIAL,  time TIMESTAMP DEFAULT now(),  name VARCHAR(50),  address VARCHAR(50),  city VARCHAR(50),  state VARCHAR(2),  country VARCHAR(3) DEFAULT 'USA',  postlcode VARCHAR(15),  age smallint,  lattitude real,  longitude real,  somebool boolean,  message textitem  };

展开更多 50%)
分享

猜你喜欢

将你的网站从MySQL改为PostgreSQL

MySQL mysql数据库
将你的网站从MySQL改为PostgreSQL

备份PostgreSQL和MySQL数据库

编程语言 网络编程
备份PostgreSQL和MySQL数据库

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MySQL和PostgreSQL两数据库的对决

编程语言 网络编程
MySQL和PostgreSQL两数据库的对决

将MySQL数据库移植为PostgreSQL

编程语言 网络编程
将MySQL数据库移植为PostgreSQL

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

别让网站登录将你的用户拒之门外

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
别让网站登录将你的用户拒之门外

将你的网站设置为客户的信任站点--VB方案

ASP
将你的网站设置为客户的信任站点--VB方案

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Oracle数据库技术(2)

Oracle数据库技术(2)

MySQL数据库中部分数据损坏恢复过程

MySQL数据库中部分数据损坏恢复过程
下拉加载更多内容 ↓