在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(