兴海北路

---男儿仗剑自横行
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

  • 随笔 - 85
  • 文章 - 0
  • 评论 - 17
  • 引用 - 0

常用链接

留言簿(6)

随笔分类

随笔档案

收藏夹

全是知识啊

搜索

  •  

最新评论

阅读排行榜

评论排行榜

如何把Access中数据导入Mysql中[手工]
作者: falcon   发表日期: 2006-04-12 18:31   复制链接



版权声明:该文为本人原创,可以自由转载,但不得用于商业途径,并且需保留原作者名和本站地址.

参考资料:
1)mysql入门:http://space.lzu.edu.cn/homeof/usmot/bbs/show.asp?id=85
2)mysql数据类型:http://blog.xinweb.org/?action=show&id=20
3)mysql中文手册:http://www.linuxforum.net/books/mysqlmanual/manual_toc.html
4)mysql导入导出:http://it.yn.cninfo.net/pubnews/doc/read/8742421943220786691/103.oldsystem14.2635/index.asp

背景说明:

由于要做ftp搜索引擎的新版,即把目前VB+ACCESS+ASP的版本转换成C+Mysql+PHP版

打算WEB开发和底层开发同时进行

所以得先想办法把Access中的数据转到Mysql中

那么如何实现呢?

转入正题
下面,一步一个脚印开始把Access数据转换成Mysql的哦

第一步:

根据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数据库后,选择"文件">>导出>>文本文件
在选择导出后会弹出一个窗口,我们通过单击"高级"设置其中的字段分割符为{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;


呵呵,ok,我们成功的把数据从Access导入到Mysql里头拉
其实我们完全可以把这些操作更简化一些,有时间再弄,呵呵

兄弟姐妹们还有什么好的简单办法,不妨到后面跟贴哦

关于把文本文件里头的数据转入postgresql中:

Quote:

将SQLSERVER的数据导入到postgresql中
在linux 的实际应用过程中,经常要处理一些数据的导入及导出 ,特别是将windows平台的数据导到linux平台的数据库中. 从网上的一篇“如何把ACCESS的数据导入到Mysql中”文中,我获得了一些启示,成功的将sqlserver数据导到了postgresql数据库 中。
实现手段如下:
postgresql有一个非常有用的sql命令COPY — 在表和文件之间拷贝数据 ,
语法
COPY [ BINARY ] table [ WITH OIDS ]
FROM { filename | stdin }
[ [USING] DELIMITERS delimiter ]
[ WITH NULL AS ull string ]
COPY [ BINARY ] table [ WITH OIDS ]
TO { filename | stdout }
[ [USING] DELIMITERS delimiter ]
[ WITH NULL AS ull string ]
详细请参见postgresql7.1.1 document中文版(http://laser.zhengmai.com.cn/pgsqldoc-7.0c/sql-copy.htm)说明。
首 先我们把数据从sqlserver中导出为文本文件.在导出过程中注意选择好字段分隔符和文本标识符,且查看一下文本文件,确定一个记录是否在同一行上, 如不是,则手工把回车键除掉.假如我们导出的文本文件为c:\friend.txt.把它拷贝到linux下 /usr/test/目录下。其内容如下:
1,云飞扬,男,南京六合,徐州建院
2,孙高勇,男,南京六合,徐州建院
3,朱晓玲,女,南京,未知
我们要将数据从linux文件复制到表friends(表的结构要同文本文件的格式一致字段如下:id,name,sex,address,school),使
用“,”字符作为分隔线:
copy friends FROM /usr/test/friend.txt USING DELIMITERS ',';
去试一下(注意转义字符),是不是一切ok!
当然拉,这种方法还是比较麻烦地,不知各位还有什么更好的方法,请告诉我,我的email:yfy002@21cn.com

参考文档:1.如何把ACCESS的数据导入到Mysql中
2.postgresql7.1.1 document中文版(http://laser.zhengmai.com.cn)



参考http://www.akae.cn/bbs/redirect.php?fid=24&tid=3584&goto=nextoldset

posted on 2008-03-14 16:16 随意门 阅读(508) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理