我使用MySQL Migration Toolkit将SQL Server 2008数据库迁移到MySQL。但是,它将我的所有bit
类型转换为tinyint
。我的数据模型不喜欢这个,因为我有一堆表达式测试的是真/假,而不是0-255。
有没有办法告诉Toolkit转换这些不同的,或者我可以在新数据库上运行的一些SQL进行转换?
答案 0 :(得分:1)
在5.0.5之前的MySQL中Bit并不存在,所以Migration Toolkit可能还没有更新,但你可以使用TINYINT(1)代替来自mysql网站的引用:
“从MySQL 5.0.3开始,BIT数据类型可用于存储位字段值。(在5.0.3之前,MySQL将BIT解释为TINYINT(1)。)在MySQL 5.0.3中,仅支持BIT对于MyISAM.MySQL 5.0.5扩展了对MEMORY,InnoDB,BDB和NDBCLUSTER的BIT支持。“
为了转换你可以使用ALTER TABLE:
ALTER TABLE MODIFY TINYINT(1);
或者如果你想使用新的BIT类型,你也可以在那里使用它,但是因为它有点新,我认为我们将继续在BIT类型中遇到一些问题。
对于所有列,实际上并没有很好的方法,我通常在导入之前使用sed或perl -pi在我的.sql文件中进行修改。
希望有所帮助!