首页 > 编程技术 > php

MySQL数据库格式轻松转

发布时间:2016-11-25 16:43

在Linux界享有很高声誉的MySQL数据库,以其小巧玲珑、功能强大、全免费而著称。但对于很多用户来说,有时候必须要在Windows浏览、分析其中的数据,而在Windows下,MySQL数据库文件是无法被其他程序读取的。所以有人编写了这个格式转换程序---MySQL-to-Access。它可以把MySQL格式数据库文件转换为普通Access数据库文件,方便我们在Windows下轻松编辑、浏览其中的数据了。它适用于所有操作系统版本的MySQL数据库转换。
  大家可以到http://crctimes.onlinedown.net/down/sql2accd.exe下载这一程序。

MYSQL到ORACLE程序迁移的注意事项
2001-09
有很多应用项目, 刚起步的时候用MYSQL数据库基本上能实现各种功能需求,随着应用用户的增多,
数据量的增加,MYSQL渐渐地出现不堪重负的情况:连接很慢甚至宕机,于是就有把数据从MYSQL迁到
ORACLE的需求,应用程序也要相应做一些修改。本人总结出以下几点注意事项,希望对大家有所帮助。
1. 自动增长的数据类型处理
MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。
ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个
值赋于此字段。
CREATE SEQUENCE 序列号的名称 (最好是表名 序列号标记) INCREMENT BY 1 START WITH 1
MAXVALUE 99999 CYCLE NOCACHE;
其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999
INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL
2. 单引号的处理
MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串
前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
3. 翻页的SQL语句的处理
MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;PHP里还可以用SEEK定位到结果
集的位置。
ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能
用ROWNUM<100, 不能用ROWNUM>80。
以下是经过分析后较好的两种ORACLE翻页SQL语句( ID是唯一关键字的字段名 ):
语句一:
SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT
ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND
NUMROW < 100 ) ORDER BY 条件3;

语句二:
SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM
TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
4. 长字符串的处理
长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于
MySQL以速度为目标
--------------------------------------------------------------------------------
MySQL和PostgreSQL都是非常著名的数据库开放源码项目,而且都有取代商用数据库系统的趋势,但两者有着不同的设计目标。一般而言,如果需要更快的速度,可以优先考虑MySQL,而如果需要一些新的特色,那可以选择PostgreSQL。
目前MySQL由MySQL AB公司维护,其最新稳定版本为3.23,支持事务处理的3.23Max版也进入了Beta测试阶段,而它的最新开发版本4.0已经进入了Alpha测试阶段。它略显不寻常的许可费用,很容易让用户对它印象深刻。它的价格随平台和安装方式的不同而改变,其Windows版本在任何情况下都不免费,而对任何Unix/Linux版本,如果用户或系统管理员自己安装是免费的,第三方安装则必须支付许可费用。
MySQL是基于C/S体系结构的网络数据库管理系统。它的设计以速度为主要目标,可以快速处理多个用户的查询请求,在处理客户端连接时的速度也非常快,很适合用做Web站点的后台数据库。相对而言,PostgreSQL的执行速度比较慢,它对每个连接都生成一个子进程,而生成子进程、建立后台服务进程的步骤减慢了它的执行速度。MySQL的服务器功能很紧凑,各种复杂的功能处理(比如XML支持)完全被放到客户端进行,这使得增加功能时不会牺牲数据库服务器的速度和可靠性。而且它已被商业内存检测程序证明不存在内存泄露,连续中断和程序崩溃的现象也很罕见,在稳定性上比PostgreSQL要强一些。
在最初的设计阶段,MySQL主要面向中等规模的数据库,也就是说,数据库的规模大约有几千万行,每个表大约100MB。随着MySQL项目的发展,它的使用领域也逐渐扩展到TB规模的大型数据库和小型的手持或嵌入式设备领域。但是在短期内,MySQL不会支持实时数据库或大规模集群数据库。虽然在其3.23版本中,它通过MyISAM表,可以使系统在理论上能够支持8000PB的表。但由于操作系统的限制,在大部分Linux系统下,它仅能处理最大为2GB或4GB的表。在3.23版本中,还加入了支持大型服务器集群的复制、InnoDB的事务表处理器、Berkerley DB事务表处理器接口、全文本搜索、MyODBC 2.5接口、MyISAM表的自动检查和修复、批量插入等新模块。
InnoDB和BDB事务表处理器的引入使MySQL中使用这些方式存储的数据表具有很好的事务处理能力。不过对于其他方式存储的表,使用原子操作维护完整性和一致性通常会损失一些性能。在完整性非常重要时,可以使用LOCK TABLES进行表锁定。从3.23.44开始,InnoDB表支持外码限制检查,不过它的使用,特别是误用外码可能会导致较严重的问题。
二。导库的VB程序
  这个工程要使用一些对象库,在数据库访问方面,决定使用ADO(ActiveX Data Objects),对于使用过ASP的人,这个名字应该非常熟悉了,实际上,它在VB中的应用也是几乎一样的,由于要操作Excel,还要引用一个扩展的对象库。点菜单中的“工程”---“引用”,选择“Microsoft ActiveX Data Objects 2.6 Library”和“Microsoft Excel 9.0 Object Library”,在引用列表中,可引用对象库的版本或许有所不同,选择类似的最新版本就可以了。要使用对话框和进度条,还要引用一些部件,点菜单中的“工程”--“部件”,选择“Microsoft Common Dialog Control 6.0(SP3)”和“Microsoft Windows Common Controls 6.0(SP3)”。
 
界面如图一所示

图中各数字表示的控件分别是:
1-3:3个均为TextBox控件,名字分别为mdbfilename,mdbpassword,xlsfilename,mdbfilename用来指示导入Access文件的路径和文件名,mdbpassword用来输入Access文件的密码,xlsfilename用来指示导入Excel文件的路径和文件名;
4:名称为select_mdbfile,CommandButton控件,用来选择要导入的Access文件;
5:名称为importMDB,CommandButton控件,选择好文件后,用该按钮导入MDB文件
6:名称为CommonDialog1,CommonDialog控件
7:名称为select_xlsfile,CommandButton控件,用来选择要导入的Excel文件;
8:名称为importXLS,CommandButton控件,选择好文件后,用该按钮导入XLS文件;
9:名称为CommonDialog2,CommonDialog控件
10:名称为prgBar1,进度条(ProgressBar),当要导入很多记录时,使用进度条可以指示当前的导入进度
11:名称为StatusBar1,状态条(StatusBar),指示导入的进展状态,包括“正在导入”,“导入完成”等。
 
要将Style设置为“1-sbrSimple”

在程序的头部作以下声明
Option Explicit
Dim Cn As New ADODB.Connection
Dim Cnmysql As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Rsmysql As New ADODB.Recordset

Function replace_str(srcstr As String)
srcstr = Replace(srcstr, "", "")
replace_str = Replace(srcstr, "'", "'")
End Function

双击form,在装载form时输入以下的代码
Private Sub Form_Load()
'将进度条设置为不可见
prgBar1.Visible = False
'连接mysql数据库,pwd为数据库的密码,uid为用户名,dsn为数据源的名称
Cnmysql.ConnectionString = "uid=root;pwd=;dsn=build"
Cnmysql.Open
End Sub

一。Mysql数据库的安装、建库和ODBC的安装设置
  Mysql和ODBC驱动可以在其主页(http://www.mysql.com/)下载,在右边的Latest Versions点击进去,下载相应的版本就行了。这里我们要下载Intel版本的Mysql(最新版本为3.23.40),ODBC驱动则是MyODBC 2.50.37 for NT/2000 (full setup),如果使用Win95/98,其驱动是不同的,请注意区分。
  然后就可以安装了,Mysql的安装是非常简单的,将它解压到一个目录(C:mysql),在Win2000中,Mysql可以作为Windows的一个服务运行,在命令行中运行"C:mysqlinmysqld-nt --install",然后在Win2000管理工具的服务中我们就可以发现有Mysql这个服务运行,不过我发现直接运行winmysqladmin.exe也是可以的,这时会要求输入一个密码,这是Mysql的连接密码,请记好,默认的连接是没有密码的(用户为root)。
  其后是建立数据库和表,由于要将Access和Excel中的数据都导过来,因此表格中要包括两者的全部字段,这里为简单起见,只选择了其中的一些字段来说明,运行cmd进入到命令行方式,切换到c:mysqlin目录,执行"mysqladmin create build",这个命令是创建数据库,build是数据库的名称,成功后,执行“mysql”,进入"Mysql>"的命令行方式下,执行以下的命令:
mysql>use build;
mysql>CREATE TABLE loupan (
id int(10) unsigned NOT NULL auto_increment,
loupantype varchar(6),
inputdate date,
at_whatsection varchar(6),
buildname varchar(50),
buildaddress varchar(50),
room tinyint(4),
hall tinyint(4),
areasize decimal(10,2),
exp_sellprice decimal(13,2),
ownername varchar(20),
contactway varchar(50),
memo varchar(255),
updatestatus char(1),
goodloupan char(1),
PRIMARY KEY (id)
);
  接着就会出现Query OK, 0 rows affected (0.04 sec)的成功提示,上文中use build表示切换当前的数据库为build,接着的语句是建表的命令,字段由上至下表示的是id号(自动加1,而且是该表的主键)、楼盘的类型、输入的日期、所在的区域、楼盘的名字、地址、房间的数目、厅的数目、面积、期望售价、业主的名字、联系方式、备注、更新状态、笋盘标志。
  接着就是安装Mysql的ODBC驱动了,MyODBC的安装也是傻瓜式的,运行setup,一步步确认。结束后,就可以在控制面板的ODBC数据源中进行设置了,点“系统DSN”,选择“添加”,在驱动程序的列表中选择“mysql”,就会弹出一个配置页面,在Windows DSN Name中输入数据源的名称,这里输入build(还可以输入其它的名称,不一定跟数据库的名字相同),在“MySQL host(name or IP)”中,输入“localhost”,表示Mysql运行在本机上,在Mysql Database Name中输入数据库的名字“build”,User中输入“root”,PassWord中输入刚才设置的密码,如果刚才没有设置的话,留空,按“OK”后,就会在系统数据源中多了一项“build”,这样Mysql的ODBC数据源就设置成功了。
标签:[!--infotagslink--]

您可能感兴趣的文章: