当前位置:C++技术网 > 资讯 > 数据库数据迁移:将一个连接的数据库的表导入到另一个连接数据库表

数据库数据迁移:将一个连接的数据库的表导入到另一个连接数据库表

更新时间:2017-09-29 08:48:26浏览次数:1+次

    系统改造完毕后,也就要将正式数据库里的数据导入到新数据库里。这样才能无缝切换系统。那么如何将原数据库的数据导入到新数据库里面呢?
    在SQL SERVER的管理工具中,有一个导出数据的向导,可以实现不同的数据库的数据导入导出,非常方便。这个是跨连接跨数据库的数据表导入导出技术。
    跨连接的数据表导入导出需要单独写程序支持这种转接,相当于程序从一个连接中将数据查出来,然后转到另一个连接的数据库的数据表里。如果我们使用的工具没有提供这样的功能支持,我们就没有办法这样做了。
    然而,像SQL SERVER管理工具的这个功能,需要你安装管理工具才能使用,其实也是很不方便的。有没有更好的办法呢?当然有!!
    下面分享下我的解决方案。

        执行sql脚本文件是各个数据库管理工具都支持的功能,如果连这个功能都不支持,那么这个软件你也不要用了。支持执行sql文件的功能大概像这样的:

    数据库数据迁移:将一个连接的数据库的表导入到另一个连接数据库表

        有了SQL文件的运行和转储功能,我们就可以解决跨连接的问题了。我们使用数据库工具打开一个连接,将这个数据库(原数据库)的所有表转储到SQL文件中,是带有“结构和数据”的SQL文件。然后关闭这个连接。打开要存储这些数据的数据库的连接(即新数据库)。然后再在新数据库上运行SQL文件,将原数据库的所有表都导入到了新数据库中。不过这样有点麻烦,即新旧数据库的表都在一起了,就不方便区分了。所以,我们可以将原数据库整个导出来,然后在新连接(新数据库这个连接)中创建一个临时数据库,用于存放原数据库所有数据。然后运行SQL文件,将原数据库的所有表导入到临时数据库中。这样,原数据库和新数据库从两个连接变成了一个连接中了。到此,第一步就完成了。

        在一个连接里面,我们就可以使用SQL直接操作两个数据库的数据了,自然就可以实现数据的迁移。我们多出来的工作,也就是执行两次SQL文件,一次是转存出来,一个是导入到临时数据库里去。这个动作代替了跨连接的数据迁移。现在我们只需要实现同连接的跨库的数据库迁移。

        实现跨库的数据库迁移,我们需要先将两个数据库都打开。我们推荐的数据库管理工具是Navicat。然后我们使用数据表导入导出的SQL语句就行了。

    1.如果两张表字段一致,直接执行

    语法:insert into 目标表名  select * from 源表名;

    2.如果两张表字段不一样,我们需要使用别名和指定字段名列表

    语法:insert into 目标表名(字段名1,字段名2,...,字段名n) select 字段名A as 字段名1,字段名2,...,字段名n from 源表名;

        SQL语法特性,该怎么用就怎么用。两种方法都很实用,第二种可以非常灵活,如果两张表的字段不一样,结构不一样,或者有的不存在,都可以自己定义字段名,查询出一个新的字段名。最终的效果只要正确的目标字段名和源字段名,而且两者一一对应即可。