如何把Access中数据导入Mysql中

如何把Access中数据导入Mysql中,第1张

方法一:首先我们把数据从Access中导出为文本文件.在导出过程中注意选择好字段分隔符和文本标识符,且查看一下文本文件,确定一个记录是否在同一行上,如不是,则手工把回车键除掉.假如我们导出的文本文件为c:\samp_table.txt.其内容如下:

1,张新化,男

2,江先进,女

接下来我们用mysqlimport

–u

root

–fields-terminated-by=”\,”

samp_db

samp_table.txt

或者用load

data

infile

“c:\\samp_table.txt”

into

table

samp_table

fields

terminated

by

“\,”

去试一下(注意转义字符),是不是成功!如果还不行,请仔细看一下具体命令的帮助.下面列出一些选项:

--fields-enclosed-by=char

指明列值应包括在指定的字符中.通常用引号.缺省时,假定列值不包括在任何字符中.

--fields-escaped-by=char

表示用于转义特殊字符的转义符.缺省时表示无转义符

--fields-terminated-by=char

指定分隔列的字符.缺省时假定列值由制表符分隔.

--lines-terminated-by=str

指定结束输入行的串(可以是多字符的).缺省时假定由换行符终止行。

方法二:

利用odbc,先在odbc里设置好mysql的数据源,然后打开access,对要导出的表右击,选择导出,在d出窗口中的“保存类型”中选择“odbc

数据库”,然后去选择刚才设置的mysql数据源,确定即可,去mysql里查,数据已导入

不同数据库之间若不能导入导出,那么将是一件可怕的事情,所幸的是一般情况下通过不同的方法和途径,都可以实现,方法有多种,本人提供其中的一个,提供一个自己的处理思路,意在抛砖引玉,

第一步:首先将access数据库利用自身的导出功能,自定义一种容易对其 *** 作的格式的txt文本文档,这也是关系到下一步 *** 作的关键。

第二步:先在mysql中建立一个同样结构的表(当然,这步可以在第三步中用程序实现,由于时间仓促,我未能完成,抱歉)

第三步:也就是自己编程了,想办法把导出的文件用程序把每条记录读出并写入到Mysql数据表当中,

$row = file("ipadress.txt")//读出文件中内容到一个数组当中

$num=count($row)//统计表中的记录总数

mysql_connect("localhost","root","")//连接数据库

mysql_select_db("cht")

for ($i=0$i<$num$i++)//开始导入记录

{

$fields=explode(",",$row[$i])

//echo $fields[0]

//echo $fields[1]

//echo $fields[2]

mysql_query("insert into ipaddress (area_h,area_f,address) values('$fields[0]','$fields[1]','$fields[2]')")

}

echo "导入成功!共有 $num 条记录导入,"

以上 *** 作我是针对从网上下的一个ip地址对照表进行的 *** 作,感兴趣的可以试一试,

第一步:

根据Access中数据库的逻辑结构[或者是以前写好的数据库设计文档哦]

在Mysql下设计并创建出对应的数据库

先看看Access中的几个表的结构,并进行初步的数据类型转换哦

site_tab //站点信息表

字段名称 数据类型(Access) 数据类型(Mysql)

id 数字 int

site 文本 char(15)

port 数字 int

user 文本 char(15)

pw 文本 char(15)

acc 是/否 enum('N','Y')

indb 是/否 enum('N','Y')

info 备注 text

key_tab //关键字统计表

key 文本 char(100)

acctime 数字 int

file_tab //文件表

file Text(100) char(100)

postfix Text(4) char(4)

pid Integer int

ipid Integer int

acctime long int

cat_tab //目录表

id Integer int

cat Text(100) char(100)

postfix Text(4) char(1) //这个可以考虑删除掉,因为多余

pid Integer int

ipid Integer int

acctime long int

下面根据上面的转换,创建mysql下的数据库和对应的表项

[注意:上面涉及到的Mysql的数据类型可能选择地不够合适,需要日后调整]

先创建库,取名为falcon_search

create database falcon_search

创建表site_tab

create table site_tab

(

id int not null primary key,

site char(15) not null,

port int default 21,

user char(15) not null default 'anonymous',

pw char(15) not null default 'falcon',

acc enum('N','Y') default 'N',

indb enum('N','Y') default 'N',

info text

)

创建表key_tab

create table key_tab

(

skey char(100) binary not null unique ,

acctime int default 0

)

创建表cat_tab

create table cat_tab

(

id int,

cat char(100) binary not null,

postfix char(1) binary,

pid int references cat_tab(id),

ipid int references site_tab(id),

acctime int,

primary key(id,ipid)

)

创建文件表file_tab

create table file_tab

(

file char(100) binary not null,

postfix char(4) binary not null,

pid int references cat_tab(id),

ipid int references site_tab(id),

acctime int

)

//由于文件重名的情况比较多,所以无须设置主关键字

第二步:

数据库和表都创建好拉,我们现在得想办法把数据从Access弄到Mysql下

怎么弄呢?

1)先把Access中的数据导出为txt文件[文本文件]

具体办法:打开要 *** 作的Access数据库后,选择"文件">>导出>>文本文件

在选择导出后会d出一个窗口,我们通过单击"高级"设置其中的字段分割符为{tab},文本识别符号改成{无},当然还可以进行其他的设置哦.

注意:对应的各个文件的文件名取名为对应的表名哦(统一一下,方便后面 *** 作)

2)之后,复制到mysql下的bin所在目录下

第三步:

设法把文本文件中的数据导入到刚才创建的表中,要对应起来哦

主要用到该句:LOAD DATA LOCAL IN FILE 存有数据的文本文件名 INTO TABLE 表名

下面我们通过该办法一个一个地把数据从文本文件中导入对应的表中

1)site_tab.txt===>site_tab

load data local infile "site_tab.txt" into table site_tab

ok,成功拉,不过好象有警告哦

我们先用select * site_tab看看

原来,acc和indb全为空的

现在我们只要把acc和indb的值更新为'N'就可以拉:

update site_tab set indb="N"

update site_tab set acc="N"

2)key_tab.txt===>key_tab

load data local infile "key_tab.txt" into table key_tab

3)cat_tab.txt===>cat_tab

load data local infile "cat_tab.txt" into table cat_tab

4)file_tab.txt===>file_tab

load data local infile "file_tab.txt" into table file_tab


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10095781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存