Linux中国  设为主页
 收藏本站
 
当前位置: > 首页 ->数据库应用 ->PostgreSQL ->将你的网站从MySQL改为PostgreSQL
  相关分类: 
Access
DB2
Mysql
Oracle
PostgreSQL
SQL Server
Sybase
其他数据库
  站内搜索: 
热门文章排行
热门文章排行 Oracle-Decode()函数和CASE语句的比(06-29)
Linux下JSP搭建(Tomcat4+jdk+postgre(04-11)
Linux下免费数据库PostgreSQL开发入(04-22)
教你在Oracle中实现SELECT TOP N的方(06-29)
PostgreSQL的热备和恢复 (04-22)
精采文章排行
精采文章排行 Oracle数据库SPFILE文件特点及具体操(06-29)
Oracle数据库在NT平台下的系统优化策(06-29)
教你在Oracle中实现SELECT TOP N的方(06-29)
Oracle-Decode()函数和CASE语句的比(06-29)
Oracle7.X 回滚表空间数据文件的误删(06-29)
  ·深入研究Oracle数据库中空间管理的方法 ·Unix环境卸载Oracle表结构文本中的脚本 ·如何把应用程序和Oracle客户端一起打包 ·Oracle数据库如何查询记录时给记录加锁 ·Oracle数据库删除两表中相同数据的方法 ·利用Oracle的管理服务器将数据导入导出 ·Oracle 9i充分利用自动撤销管理的优点 ·认识那些影响Oracle系统性能初始化参数 ·Oracle如何对CLOB行字段来执行全文检索

将你的网站从MySQL改为PostgreSQL

作者:Webmaster   来源:赛迪网技术社区    点击:   日期:2007-04-17 [收藏] [投稿]

  IE是否经常中毒?推荐您

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

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

转换的动机

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

我继续使用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的失败,最终我接受了这个建议。

将数据从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

  };

在一个Postgres的表定义中,字段名后面必须跟着字段类型。在上面的例子中我们给出了一些最普通的字段类型,你还可以在有关Postgres数据类型的文档中找到全部的字段类型的列表。对于不同的任务,Postgres在字段类型方面有多种选择,并可以存储各种类型的数据,从Internet地址到货币信息到几何对象的定义。这儿简要地介绍最常用的几种数据类型。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页12 3 下一页

上一篇: 客观公正地评价MySQL和PostgreSQL的优劣   下一篇:MySQL和PostgreSQLl两数据库的对决
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论

   相关文章:
·Oracle Database 11g将7月11日正式发布

   文章评论:(1条)
  
 请留名: 匿名评论   点击查看所有评论 论坛讨论
 

 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。