现在NoSQL流行,有一个原因也是因为不需要去刻意处理table的schema,直接存储数据,这样简单!所以也不会有数据库表的迁移问题。数据库表迁移这一块儿一直是一个麻烦点,但我最近用了SQLite3做了个小项目,所以总结下数据库迁移的方案。
原理
实施
1. 使用sqlite3的User_version 存贮自定义的数据库版
2. 所有的数据库升级文件,放在一个文件中,都直接使用sql文件,方便直接查看管理。文件结构如下
文件结构设计
3. 迁移脚本如下, 具体逻辑注释中已经写明
4. v[n].sql 和v[n-1]tov[n].sql 文件的***都去需要通过user_version来设置数据版本为n,一个v2tov3.sql 的demo如下:
总结
使用场景
目前这套方案适合数据量小,对停机维护可以接受的业务情况,因为需要停机升级,但是这个方案,足够简单清晰且能满足所有不同版本间的数据升级。
不足与展望
怎么把数据库从oracle迁移到国产数据库GBase 8s中?
迁移主要包括三个步骤:
数据库架构迁移(Schema/DDL)、
数据迁移(Data)、
应用迁移(Application)。
如何将本地sql数据库导入到万网主机上?
第一步:通过sql脚本生成表结构,可以保证本地数据库中视图、存储过程、以及表的默认值、标识、主键等属性的完整性,避免由于dts传输引起丢失属性的问题,同时使用查询分析器执行sql脚本,在服务器端创建表结构;第二步:在本地创建一个和万网主机相同权限的sql数据库;第三步:将原数据库备份并还原到新创建的数据库中;第四步:通过企业管理器的dts传输方式将本地数据导出到服务器。
MYSQL数据库中的一个表怎么复制到新建的一个数据库里?
在控制台根目录下打开SQLserver企业管理器,新建sqlserver组,根据自己的情况进行选择;然后新建sqlserver 注册,进行对sqlserver的连接。 准备妥当后,下面就开始了:首先打开数据转换服务,新建包,打开DTS界面,在连接中选择数据源进行配置。 再选择将要转换到的目的文件,这里我选的 Textfile(destination),选择好文件的存放位置之后,我们来新建一个任务。 这里我们只选择转换数据任务,将带有“选择源连接”“选择目的连接”的鼠标分别选中数据源和目的之后,我们对新生成的连接进行定义,在其属性中将源,目的,转换依次定义。 执行任务,提示成功。 保存任务。 然后在新建的任务上导出数据,有向导提示,其中一项选择“从源数据库复制表和视图”。 这一步已经把数据导出到目的文件中。 下一步在mysql中新建表,与将要导入的结构保持一致时,直接选取“从文本文件中提取数据,插入到数据表:”,将选项添好后,“发送”就可以了,浏览一下,数据已导入了。 若要导入的表已经存在,且属性名也不同,这时就先建一个与要导入的数据相同结构的表并导入数据(按刚才的进行就可以了),然后在mysql中导出“数据和结构”,得到sql语句,将其在文本文件中编辑,利用文本编辑器的替换功能,将表名修改,列名加入,最后将其粘贴在要导入表的执行sql语句的地方,执行一下,数据便导入了。
发表评论