所以我不希望这个帖子被标记为垃圾邮件,因为之前关于这个主题的帖子是,所以我将解释到目前为止我做了什么,我的问题是,并询问是否有任何解决方案。< / p>
我的笔记本电脑上有一个MySQL数据库,我需要迁移到iSeries上的DB2。我正在使用一个工具,由于垃圾邮件问题,我不会说哪一个,这使我能够在我的MySQL数据库中“复制”一个表并将其“粘贴”到我的DB2数据库中。
我遇到的问题是因为表名和列名在MySQL数据库中包含空格,该工具在粘贴时失败。我通过用下划线替换空格来改变一个表来证实这一点,并且复制工作完美。我需要复制一百多个表,并且不希望手动编辑每个表和列名。
有没有办法在MySQL表名和列中用下划线全局替换空格?
还有其他想法吗?我也正在研究一种方法来强制查询工具创建的用于将对象名称括在引号中,但到目前为止还没有运气。
感谢您提供任何帮助和建议。
答案 0 :(得分:0)
由于Stack Overflow有助于解决编程问题,我将忽略所选工具中的缺陷问题,并提出针对更大问题的编程解决方案 - DB2不允许表和列名称中的空格。你确实要求任何建议......
编写读取MySQL目录表的代码。在DB2中,他们可以是SYSTABLES,SYSVIEWS,SYSINDEXES,SYSCOLUMNS等。阅读SYSTABLES并将其用作“&#39; primary&#39;其余代码的来源。检查表名;如果它有嵌入空间,请用下划线替换它。使用SYSCOLUMNS生成一个CREATE TABLE语句,该语句将创建新表(在新的MySQL数据库中?) - 还执行空格以强调替换。发出CREATE TABLE后,生成一个SQL语句,该语句将INSERT INTO新表中旧表中的列;再次做空间来强调替换。填充新表后,生成SQL语句到CREATE VIEW,CREATE PROCEDURE,CREATE FUNCTION等。
一般的想法是,您将使用与DB2 for i立即兼容的表,视图和列名完全重新创建MySQL数据库,以便您的工具能够做到这一点。
当然,如果你遇到那么多麻烦,它可能就像在IBM i上直接创建表等一样容易,而不是通过一个不是你的中间工具需要。