Migrate Sybase to Mysql
企业数据库迁移要求
除了不同数据库管理系统的SQL语法和功能之间的重大差异外,还必须考虑以下因素,这些因素严重影响企业数据库迁移的复杂性以及迁移方法和工具的选择。
数据库和应用程序转换 - 不仅仅是数据传输
Oracle,SQL Server等企业级数据库管理系统为应用程序开发提供了丰富的功能。数据库与应用程序紧密结合,目前实现了业务逻辑和规则的重要部分,提高了关键任务应用程序的性能,安全性和模块性。
出于这个原因,数据库迁移不应仅被视为数据传输。它还涉及数据库模式(表和视图定义,完整性约束等)和服务器端业务逻辑(存储过程和函数)的转换。
所有这些数据库特性和数据库对象对于应用程序都非常重要,并且必须完全转换以保留应用程序的行为和功能。
大量的数据库对象 - 成本高昂的手动工作
公司数据库包含数百到数千个数据库对象(表,视图,程序等)。由于大量的对象和各种使用的功能,迁移工具应尽可能多地解决转换任务。手动修复,即使是一些小问题,也涉及许多对象,因此非常耗时且成本高昂。
另一个问题是数据库对象的相互依赖性很大。几乎每个程序都引用表格,视图和其他程序,并且在转换过程中必须保持这种依赖关系。
例如,如果源标识符(表或列名等)是MySQL中的保留字,则它必须包含特殊字符或在迁移到MySQL时进行更改。此修改也必须在引用此标识符的所有视图,过程和应用程序中完成。
大量的数据
企业数据库通常存储大量的数据。由于这个事实,根据所选择的数据导入方法,将数据传输到MySQL可能需要几个到几十个小时。在这种情况下,时间差异相当大,因此尽可能快地使用最合适的工具来传输数据非常重要。
迁移软件的要求
全面的综合解决方案
迁移软件不仅要转换数据,还要转换整个数据库模式和业务逻辑(例如存储过程)。
该软件应支持包括LOB列(图像,视频等),包括数据类型,NULL和标识属性,默认值,主键和外键,唯一约束,视图,存储过程和函数的表定义。
除了SQL语法的差异之外,软件还必须解决诸如保留字和标识符冲突之类的特定问题。每个数据库都有一个保留字列表,不允许将其用作不带引号的标识符。如果标识符不是源数据库中的保留字,而是MySQL中的保留字,则会出现此问题。例如, LIMITOracle不是保留字,而是MySQL中的保留字。在转换到MySQL时,这些标识符必须在使用它们的任何地方引用或更改(在视图,存储过程等中)。
该工具还应该知道独特的MySQL语法以及必须为其他数据库中不需要的子表中的外键列生成索引的需求。
应该集成迁移工具以便自动维护相关数据库对象的更改。例如,如果对表进行任何更改,它必须自动反映到引用此表的所有依赖对象(视图,存储过程)中。
如果迁移软件不符合这些要求并仅转换数据,例如,您将不得不手动完成转换,或者结合多个工具构建更复杂的迁移解决方案。在后一种情况下,这些工具不太可能被集成,因此在其他工具中不考虑对某个工具对数据库所做的任何更改。
提供全局规则的灵活解决方案
通常,在转换过程中不需要大量转换数据库结构和数据,因为随后需要完全重写应用程序会使迁移非常昂贵。
在大多数情况下,为了完全保留应用程序的功能,迁移的数据库不会被修改。然而,通常您可能需要稍微更改数据库模式或设置特定选项以满足应用程序的新要求。
例如,您可能需要更改源数据库与MySQL之间的数据类型映射或指定InnoDB表类型以支持外键等。
您可能还需要指定用于转换保留字或包含特殊字符的标识符的规则。默认情况下,这些标识符用引号字符括起来(在MySQL中反引用),但在编写SQL查询或过程时,开发人员使用带引号的标识符是不寻常和不方便的,您可能想要更改此类标识符以避免强制引用。
最后,数据库迁移软件应该足够灵活,以允许您执行任何所需的更改并定义各种设置。除了能够更改每个单独的对象之外,该工具还应该为您提供一种全局设置对所有对象有效的选项或规则的方法。否则,为多个对象设置相同的选项可能非常耗时。
促进应用程序转换
大多数情况下,应用程序必须在数据库转换后进行修改。通常,这些修改不会影响应用程序结构,并且需要更改本机SQL语句,考虑对数据库所做的更改(标识符,数据类型等)以及解决应用程序和MySQL数据库之间可能的接口不兼容问题。
迁移软件在转换过程中提供有关数据库中所做的所有更改的报告非常重要。但是,不需要报告所有数据库对象和列,因为这些信息可以从任何数据库管理工具中获取,并且不允许分析影响应用程序执行并需要修改的更改。
迁移软件应该便于应用程序的迁移,并提供实用程序来转换SQL语句并解决其他转换问题。
高性能
由于企业数据库存储大量数据,因此将数据从源数据库传输到MySQL需要很长时间。出于这个原因,迁移软件提供了将数据导入MySQL的最快方法,这一点非常重要。
与Oracle或IBM DB2一样,MySQL提供了一个高性能的工具,对于加载大量数据特别有效。MySQL LOAD DATA INFILE命令通常比使用SQL INSERT语句导入相同数据的速度快20倍。
迁移软件应该提供一个选项来帮助迁移数据, LOAD DATA INFILE以显着减少数据传输时间(即使使用此高性能命令也可能需要几个小时)。使用ODBC接口和SQL INSERT 语句传输数据对于企业数据库来说是不可接受的。
为了提高数据导入的性能,转换软件还应允许在导入数据后创建完整性约束和索引。
MySQL的迁移工具概述
目前,市场上有几种工具可以将企业数据库转换为MySQL。
SQLines
SQLines offers open source tools to help you transfer data, convert database schema (DDL), views, stored procedures, packages, functions, triggers, queries, SQL scripts, embedded SQL and database API between databases.
-
SQLines Data is a scalable, high performance data transfer and schema conversion tool supporting all major databases.
-
SQLines SQL Converter allows you to convert database schema (DDL), queries and DML statements, views, stored procedures, packages, functions and triggers between all major databases.
Ispirer
Ispirer商业产品,可以提供一个月的demo license。
手动
Sybase Command方式:bcp备份数据为CSV格式,在Mysql数据库创建database和schema,然后load csv数据,可能要做很多的字段转换;ddlgen导出数据库结构,表等对象。