我正在尝试使用MySQL Workbench 5.2.46CE从SQL Server 2008迁移到MySQL数据库。一切工作正常,直到复制数据(步骤"批量数据传输"):
开始……
为数据拷贝准备信息…
准备已完成的数据复制信息
确定要复制的行数复制……
统计表的行数…
Wbcopytables.exe——count-only——password_from -stdin——odbc源=司机= {SQL Server};服务器= sqlexpress;数据库=…;用户Id =…,密码=…——表文件=…
错误:确定要复制的行数:+:'NoneType'不支持的操作数类型and 'str'
Failed
我真的不明白为什么我得到这个,所以如果你们有一个想法…:)(PS:我开始使用SQL Server 2008 &MySQL工作台,所以我真的不知道他们是如何工作的)
EDIT 2 - SQL Express Table DDL (updated)
CREATE TABLE [dbo].[S_OCivilite](
[OCIV_Id] [int] IDENTITY(0,1) NOT N'',
[OCIV_Code_Pan] [nvarchar](3) NOT N'',
[OCIV_Intitule_Pan] [nvarchar](35) NOT N'',
[OCIV_DateModif_Pd] [datetime] NOT N'',
CONSTRAINT [PK_OCIV_Id] PRIMARY KEY CLUSTERED
(
[OCIV_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_OCIV_Code_Pan] UNIQUE NONCLUSTERED
(
[OCIV_Code_Pan] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
从一个数据库转移到另一个数据库时,您总是会遇到数据类型转换障碍。简而言之,您需要了解源DB中的表结构以及这些表结构如何映射到目标DB中的相同结构。所有这些SQL数据库都支持或者应该支持ANSI SQL,这是SQL的共同方面,但是每个数据库供应商都有过程扩展和DDL,这使得交叉转换变得有趣。
所以阅读你的问题,你没有SQL Server 2008,但SQL Express是SQL Server的"精简"版本。您的错误是说,在读取表以获取行计数时,它发现了数据类型或不支持的ddl语句,并且无法处理类型转换。
我使用MySQL工作台,但没有尝试迁移一个完整的数据库。您应该寻找放松类型转换的设置,或者将所有内容作为varchar发送到MySQL,然后让后续的ETL进程正确地处理和类型转换数据。或者一次做一张表,直到你明白它真正抱怨的是什么。
如果你能发布记录或记录它是抱怨或表DDL从SQLExpress,这将是真正的帮助。
EDIT 1:响应SQL DDL EDIT
我首先怀疑SQL Server中的Identity列。MySQL对应的数据类型应该是AUTO_INCREMENT。您需要找到Bulk loader的日志。您应该能够设置日志级别,并实际看到它在抱怨什么。