计算机网站调试数据库转换技术案例汇集.docx
- 文档编号:23210780
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:15
- 大小:25.81KB
计算机网站调试数据库转换技术案例汇集.docx
《计算机网站调试数据库转换技术案例汇集.docx》由会员分享,可在线阅读,更多相关《计算机网站调试数据库转换技术案例汇集.docx(15页珍藏版)》请在冰豆网上搜索。
计算机网站调试数据库转换技术案例汇集
网站调试数据库转换技术案例汇集
Phpmysqlsqlmssqlaccess
如何把*.mdb转换成mysql?
1
一、Access-to-mysqlpro2
二、关于数据导入mysql时的乱码的解决方案3
把Access的数据导入MySQL的简单方案5
Access转换为MSSQL有什么要注意的地方(代码篇)6
ACCESS改为SQL需要注意哪几个地方(概述)9
ACCESS转MYSQL三种方法,不算是技巧?
10
mysql基本命令11
如何把*.mdb转换成mysql?
我前几天刚做这件比较麻烦的事,现在我可以告诉你几个可行的办法但都不是一下子就能完成的。
1。
我当时用的是BCB,所以我利用他自带的datapump,再安装并配置了myodbc后,直接把.mdb中的表都导入mysql中. 其中的问题是如果你碰到带有mysql不支持的字段类型时,该张表就导不过去了。
例如:
littletime,money等等
2。
你可以把*.mdb的表结构导出,可以利用sql server(导出为.sql),再另存为.txt(里面就是数据表的结构)。
再在mysql提示下打入 \. 路径+*.txt
他就会创建所有的表,前提是还要先create一个空的数据库.问题在于*.sql导出的数据结构是标准的sql语句,但是mysql不认识,所以你要稍微地去调整和修改一下生成的*.txt.
快速进行Access数据库转成mysql数据库及mysql导入中文数据乱码问题的解决方案
一、Access-to-mysqlpro
Access-to-mysqlpro是一个可以直接将Access文件导入mysql中的软件,其基本用法参见了某人的某文如下:
这个要用到 Access-to-MySQL Pro 这个软件。
网上有下载,并且有破解版的。
问题是如果直接用它来把ACCESS文件导入MYSQL会出现乱码。
所以我试下以下方法,虽然麻烦点,但是还可是可行。
5.1 用Access-to-MySQL Pro来把数据库导出为*.sql 文件。
A) 运行Access-to-MySQL Pro的时候选ADVANCE MODE,下一步;
B) 选择STORE into dump file, 就是保存为*.sql文件,下一步;
C) 选择目标MYSQL的版本,选默认值,下一步;
D) 这下要选MS ACCESS USER-LEVElL SECURITY FILE,这个文件一般在你的OFFICE安装目录下。
我的是在G:
\Program Files\Microsoft Office\Office\SYSTEM.MDW , 用户名填 ADMIN , 下一步;
E) 选择你要转换的ACCESS MDB文件以及保存路径,点下一步,就可以生成.sql 文件了。
我生成的是C:
\test.sql。
5.2 把刚才生成的文件转成UTF-8格式。
用记事本打开这个文件,选另存为,编码选UTF-8,覆盖保存就OK了。
5.3 在MYSQL导入该文件
我不在phpMyAdmin导入文件是因为phpMyAdmin默认只能导入17M的文件。
懒得改相应的设置,MYSQL命令行方便些。
进入DOS窗口,转到MYSQL安装目录的BIN子目录下。
我这里是G:
\Program Files\xapp\xampp\mysql\bin.
A) mysql -uroot -p
password:
这里输入密码
B) CREATE DATABASE hewang;
C) use hewang;
E) source c:
\test.sql;
有可能会出现错误提示音,不管他,等它再次出现提示符的时候,导入成功。
我用这种方法导入一个50M的文件没有问题,只是提示音响了十分钟。
可以在phpMyAdmin下查看数据是否正确,如果没有乱码就OK了。
二、关于数据导入mysql时的乱码的解决方案
当然上文是基于php下的乱码解决方案,我在MySQLCommandLineClient下使用>sourcec:
\test.sql时导入有中文字串的字段值的时候,从SQLManager中查看记录都是乱码。
我的解决方案如下:
由Access-to-mysql生成的sql文件中有类似如下文本内容:
CREATE TABLE `userinfo` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50),
'pwd'VARCHAR(20),
PRIMARY KEY (`id`)
) TYPE=InnoDB;
注意红色的文本,修改成如下:
CREATE TABLE `userinfo` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50),
'pwd'VARCHAR(20),
PRIMARY KEY (`id`)
) ENGINE=InnoDBDEFAULTCHARSET=gb2312;
接下来,还要在文件中的LOCKTABLES`userinfo`WRITE;后面,INSERTINTO`userinfo`....文本的前面增加如下一行,如下:
LOCK TABLES `userinfo` WRITE;
SET NAMES 'gb2312';
INSERT INTO `userinfo` VALUES
这样修改这个文件以后,还要将它以ANSI编码重新保存。
这样操作以后,在MySQLCommandLineClient中使用>sourcetest.sql后导入mysql数据的字串都是正确的了。
并且,所有文本相关的编码也都是gb2312的编码。
把Access的数据导入MySQL的简单方案
我们大家都知道在建设网站的实际操作过程中,对于一些数据的导入MySQL数据库及导出经常需要进行处理。
在MySQL数据库中,一般有两种方法来处理数据的导出:
1.使用select*fromtable_nameintooutfile“file_name”;
2.使用MySQLdump实用程序
下面我们来举例说明:
假设我们的数据库中有一个库为samp_db,一个表为samp_table。
现在要把samp_table的数据导出。
则我们可以利用以下方法来实现:
在MySQL提示符下打入select*fromsamp_tableintooutfile“file_name”;
在系统命令提示符下打入MySQLdump–urootsamp_dbsamp_table>samp.sql
(当然MySQLdump有很多选项.如-d表示只导出表结构; -t表示只导入表数据)
如何来处理数据的导入:
一般我们在系统命令提示符下打入MySQLimport–urootsamp_dbsamp_table.txt(注意:
这个TXT文件名必须以表的名字命名)。
对于MySQLdump导出的数据我们还可以用MySQL–urootsamp_db 在MySQL提示符下我们用Loaddatainfile“file_name”intotablesamp_table。 另外除了以上方法,对于移动后的数据库系统与原系统一致的前提下,我们可以通过文件的拷贝来实现数据的导入与导出.首先我们用MySQLadmin–urootvariables(在系统命令提示符下)或者用showvariables;(在MySQL提示符下)来找到datadir。 如在我的环境下,此目录在c: \MySQL\data。 然后对其中的一些文件进行拷贝。 一切ok! 有了以上知识后,我们进入正题: 如何把ACCESS的数据导入MySQL数据库中。 首先我们把数据从ACCESS中导出为文本文件。 在导出过程中注意选择好字段分隔符和文本标识符,且查看一下文本文件,确定一个记录是否在同一行上,如不是,则手工把回车键除掉。 假如我们导出的文本文件为c: \samp_table.txt。 其内容如下: 1.张新化,男 2.江先进,女 接下来我们用MySQLimport–uroot–fields-terminated-by=”\,”samp_dbsamp_table.txt,或者用loaddatainfile“c: \\samp_table.txt”intotablesamp_tablefieldsterminatedby“\,”;去试一下(注意转义字符),是不是一切ok! 如果还不行,请仔细看一下具体命令的帮助。 下面列出一些选项: fields-enclosed-by=char指明列值应包括在指定的字符中。 通常用引号。 缺省时,假定列值不包括在任何字符中。 fields-escaped-by=char表示用于转义特殊字符的转义符。 缺省时表示无转义符。 fields-terminated-by=char指定分隔列的字符。 缺省时假定列值由制表符分隔。 lines-terminated-by=str指定结束输入行的串(可以是多字符的)。 缺省时假定由换行符终止行 Access转换为MSSQL有什么要注意的地方(代码篇) Access: Now() MSSQL: GetDate() ------------------- Access: mid MSSQL: SubString(expression,start,length) expression-要搜索的目标,但不能使用聚合函数 start-指定字符串的开始位置 length-指定获取字符串的长度 ------------------- Asp: Instr MSSQL: CharIndex(expression1,expression2) 参数的位置和Asp的Instr刚好相反 ------------------- Asp: Dim MSSQL: Declare@variableDataType 举例: Declare@VarNameVarChar(50) 声明变量@VarName为VarChar类型,长度为50 ------------------- 赋值: Declare@VarNameVarChar(10) Set@VarName='ThisisContent' ------------------- 数据类型转换函数,如Asp的Cstr,Clng MSSQL: Cast(expressionAsDataType) expression为目标对象 DataType为要转换成的数据类型 举例: Declare@VarNameVarChar(20) --声明一个@VarName变量为VarChar类型,长度20 Set@VarName='2' --给@VarName赋值 Cast(@VarNameAsInt) --转换成Int类型数据 ------------------- 字符串连接符号: + ------------------- 循环: WhileBoolean_expression Begin --要执行的语句 End Boolean_expression为布尔表达式,只要指定的条件为真,就循环执行语句 ------------------- if的用法 if(Boolean_expression) Begin --执行True分支.... End if....else....的用法 if(Boolean_expression) Begin --执行True分支.... End Else Begin --执行False分支 End ACCESS改为SQL需要注意哪几个地方(概述) 数据库导入以后,自动增加字段需要重写,所有的数字类型需要增加长度,最好用decimal。 所有的默认值都丢失了。 主要是数字类型和日期类型。 所有now(),time(),date()要改成getdate()。 所有datediff('d',time1,time2)要改成datediff(day,time1,time2) 有可能一些true/false类型不能使用,要变为1/0。 备注类型要通过cast(columnasvarchar)来使用。 CursorType要改成1,也就是打开数据库时要给出第一个数字参数为1,否则记录可能显示不完整。 isnull(rowname)要改成rowname=null ACCESS的数据库中的自动编号类型在转化时,sqlserver并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号! 转化时,跟日期有关的字段,SQLSERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。 有时用smalldatetime型时,转化失败,而用datetime型时,转化成功。 对此两种数据库进行操作的sql语句不全相同,例如: 在对ACCESS数据库进行删除纪录时用: "delete*fromuserwhereid=10",而对SQLSERVER数据库进行删除是用: "deleteuserwhereid=10". 日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对SQLSERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。 在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQLSERVER数据库处理中,却不能用。 ACCESS转MYSQL三种方法,不算是技巧? 第1种,较笨办法,先把access读出来,然后转放mysql 如果你觉得二种数据库,放到一起访问,你不方便弄 就先读取出来,保存有一定格式的文本文件,然后读取,存入mysql 2种,先把access转到mssql,然后从mssql转到mysql mysql基本命令 启动: netstartmySql; 进入: mysql-uroot-p/mysql-hlocalhost-uroot-pdatabaseName; 列出数据库: showdatabases; 选择数据库: usedatabaseName; 列出表格: showtables; 显示表格列的属性: showcolumnsfromtableName; 建立数据库: sourcefileName.txt; 匹配字符: 可以用通配符_代表任何一个字符,%代表任何字符串; 增加一个字段: altertabletabelNameaddcolumnfieldNamedateType; 增加多个字段: altertabletabelNameaddcolumnfieldName1dateType,addcolumnsfieldName2dateType; 多行命令输入: 注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中; 增加一个管理员帐户: grantallon*.*touser@localhostidentifiedby"password"; 每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以; 查询时间: selectnow(); 查询当前用户: selectuser(); 查询数据库版本: selectversion(); 查询当前使用的数据库: selectdatabase(); 1、删除student_course数据库中的students数据表: rm-fstudent_course/students.* 2、备份数据库: (将数据库test备份) mysqldump-uroot-ptest>c: \test.txt 备份表格: (备份test数据库下的mytable表格) mysqldump-uroot-ptestmytable>c: \test.txt 将备份数据导入到数据库: (导回test数据库) mysql-uroot-ptest 3、创建临时表: (建立临时表zengchao) createtemporarytablezengchao(namevarchar(10)); 4、创建表是先判断表是否存在 createtableifnotexistsstudents(……); 5、从已经有的表中复制表的结构 createtabletable2select*fromtable1where1<>1; 6、复制表 createtabletable2select*fromtable1; 7、对表重新命名 altertabletable1renameastable2; 8、修改列的类型 altertabletable1modifyidintunsigned;//修改列id的类型为intunsigned altertabletable1changeidsidintunsigned;//修改列id的名字为sid,而且把属性修改为intunsigned 9、创建索引 altertabletable1addindexind_id(id); createindexind_idontable1(id); createuniqueindexind_idontable1(id);//建立唯一性索引 10、删除索引 dropindexidx_idontable1; altertabletable1dropindexind_id; 11、联合字符或者多个列(将列id与": "和列name和"="连接) selectconcat(id,': ',name,'=')fromstudents; 12、limit(选出10到20条)<第一个记录集的编号是0> select*fromstudentsorderbyidlimit9,10; 13、MySQL不支持的功能 事务,视图,外键和引用完整性,存储过程和触发器 14、MySQL会使用索引的操作符号 <,<=,>=,>,=,between,in,不带%或者_开头的like 15、使用索引的缺点 1)减慢增删改数据的速度; 2)占用磁盘空间; 3)增加查询优化器的负担; 当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案; 16、分析索引效率 方法: 在一般的SQL语句前加上explain; 分析结果的含义: 1)table: 表名; 2)type: 连接的类型,(ALL/Range/Ref)。 其中ref是最理想的; 3)possible_keys: 查询可以利用的索引名; 4)key: 实际使用的索引; 5)key_len: 索引中被使用部分的长度(字节); 6)ref: 显示列名字或者"const"(不明白什么意思); 7)rows: 显示MySQL认为在找到正确结果之前必须扫描的行数; 8)extra: MySQL的建议; 17、使用较短的定长列 1)尽可能使用较短的数据类型; 2)尽可能使用定长数据类型; a)用char代替varchar,固定长度的数据处理比变长的快些; b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能; c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。 使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了; d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大; 18、使用notnull和enum 尽量将列定义为notnull,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询; 如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的; 19、使用optimizetable 对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。 具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。 可以通过使用optimizetable来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimizetable可以用于MyISAM和BDB类型的数据表。 实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表; 20、使用procedureanalyse() 可以使用procedureanalyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedureanalyse()就可以了;例如: select*fromstudentsprocedureanalyse(); select*fromstudentsprocedureanalyse(16,256); 第二条语句要求procedureanalyse(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 网站 调试 数据库 转换 技术 案例 汇集