我第一次做迁移,所以使用的方法可能很笨。我是从access把数据导出成txt,然后把txt中的数据粘到一个SQL文件里,导入mysql中,新建成一个临时的表,然后在mysql中进行处理,最后把数据插入到程序使用的正式表中。现在遇到了几个问题:问题一:临时表olddocument中有一个字段receiver存储的内容形式是这样的:|42lhf|lg|tyz|syz|sez|ssz|slz|sjz|sssz|ltez|ng|lbqjys|czqjys|lnqjys|yfqjys|ljxjys|lcxjys|lzxjys|raxjys|rxxjys|sjxjys|ljzx|ljsyzx|ljxsj|lczx|lcsygz|ragz|raez|rszj|rsez|lzzx|lzez|sjzx|sjmg|就是由用户表user中的用户名组成的字符串,两个用户名间用" | "间隔。现在我转到正式表document中,并且不再使用用户名了u_name,而是使用用户ID: u_id ,而且使用" , " 间隔,形式如:1,2,3,7,6,12,13,14,22,38,27,28,29,30,43,44用户ID:( u_id )与用户名: u_name 都是存在于用户表 user 中,请问这样的情况如转换呢?问题二:
原库中olddocument表中的时间字段 pub_time 是 “日期/时间” 格式 ,形如:2010-9-9 17:28:22现在的库document表中使用了时间戳,存储的是int类型,形如:1284024502我已经查到日期转时间戳可以用如下方法:Select UNIX_TIMESTAMP('2010-9-9 17:28:22')但是还是不会写SQL语句,现请大家帮忙,谢谢。涉及到的表结构:user表:
  `u_id` int(11) NOT NULL auto_increment COMMENT '用户ID',
  `is_mask` tinyint(1) NOT NULL COMMENT '是否被屏蔽',
  `s_num` int(11) NOT NULL COMMENT '顺序号',
  `u_name` varchar(20) collate utf8_bin NOT NULL COMMENT '用户登录名',
  `cn_name` varchar(40) collate utf8_bin NOT NULL COMMENT '用户中文名',
  `u_password` varchar(32) collate utf8_bin NOT NULL COMMENT '用户密码',
  `group` int(3) NOT NULL COMMENT '群组',
  `u_rights` int(2) NOT NULL COMMENT '用户权限',
  `u_re` varchar(200) collate utf8_bin NOT NULL COMMENT '备注',
  `u_logintime` int(10) NOT NULL COMMENT '最后登录时间',
  PRIMARY KEY  (`u_id`)
document表
  `d_id` int(11) NOT NULL auto_increment,
  `title` varchar(100) collate utf8_bin NOT NULL COMMENT '公文标题',
  `color` varchar(6) collate utf8_bin NOT NULL COMMENT '标题颜色',
  `is_top` tinyint(1) NOT NULL COMMENT '置顶',
  `doc_snum` varchar(50) collate utf8_bin NOT NULL COMMENT '发文字号',
  `pub_time` varchar(32) collate utf8_bin NOT NULL COMMENT '发文时间',
  `department` varchar(50) collate utf8_bin NOT NULL COMMENT '发文单位',
  `receiver` text collate utf8_bin NOT NULL COMMENT '接收单位',
  `content` text collate utf8_bin NOT NULL COMMENT '公文内容',
  `doc_type` varchar(30) collate utf8_bin NOT NULL COMMENT '公文类型',
  `is_feedback` varchar(50) collate utf8_bin NOT NULL COMMENT '反馈信息',
  PRIMARY KEY  (`d_id`)

解决方案 »

  1.   

    问题一: 不太明白,
    用户ID:( u_id )与用户名: u_name 都是存在于用户表 user 中;是怎么样的形式?
    问题二:
    update newtable,olddocument
    set newtable.pub_time=UNIX_TIMESTAMP(olddocument.pub_time)
    where ....
      

  2.   

    回楼上,
    用户ID:( u_id )与用户名: u_name 都是存在于用户表 user 中 ,这个后面不是有user表的结构吗?另外,问题二中,如果我希望更改表本身的pub_time字段呢?就是先把数据从olddocument转到newtable,
    然后直接在newtable表中把原来的pub_time数据更新成时间戳,这样的情况该如何写呢?
      

  3.   


    这2个时间的类型都不一样,转换可能有问题;有个方法是加一个新字段为int的类型,再把:2010-9-9 17:28:22 转换成int 更新到新的字段
      

  4.   

    类似楼主这样的数据迁移,做一个简单的程序,连接2个数据库,从ACCESS读出来,写入到MYSQL数据库,程序很简单,操作很方便。
      

  5.   

    在EXCEL中把你的数据直接处理好,然后保存成TXT文件,再直接在MYSLQ中LOAD DATA 就行了。