mysql - 从 MySQL 迁移到 DB2 iSeries

标签 mysql db2 ibm-midrange database-migration

所以我不希望这个线程被标记为垃圾邮件,因为之前的线程是关于这个主题的,所以我将解释我到目前为止所做的事情,我的问题是并询问是否有任何解决方案。

我的笔记本电脑上有一个 MySQL 数据库,我需要将其迁移到 iSeries 上的 DB2。我正在使用一个工具,由于垃圾邮件问题,我不会说是哪一个,它允许我“复制”MySQL 数据库中的一个表并将其“粘贴”到我的 DB2 数据库中。

我遇到的问题是因为 MySQL 数据库中的表名和列名包含空格,该工具在粘贴时失败。我通过用下划线替换空格来更改一个表来确认这一点,并且副本工作得很好。我有一百多个表需要复制,并且不想手动编辑每个表和列名称。

有没有办法在 MySQL 表名和列中用下划线全局替换空格?

还有其他想法吗?我还在研究一种方法来强制该工具创建的查询将对象名称括在引号中,但到目前为止还没有运气。

感谢您提供的任何帮助和建议。

最佳答案

由于 Stack Overflow 旨在帮助解决编程问题,因此我将忽略所选工具中的缺陷问题,并提出一个针对更大问题的编程解决方案 - DB2 不允许表名和列名中存在空格。您确实询问过任何建议...

编写读取 MySQL 目录表的代码。在 DB2 中,它们是 SYSTABLES、SYSVIEWS、SYSINDEXES、SYSCOLUMNS 等。阅读 SYSTABLES 并将其用作其余代码的“主要”源。检查表名;如果它有嵌入的空格,请将其替换为下划线。使用 SYSCOLUMNS 生成 CREATE TABLE 语句,该语句将创建新表(在新的 MySQL 数据库中?) - 还执行空格到下划线替换。发出 CREATE TABLE 后,生成一条 SQL 语句,将旧表中的列插入到新表中;再次用空格来强调替换。填充新表后,生成 SQL 语句来 CREATE VIEW、CREATE PROCEDURE、CREATE FUNCTION 等。

总的想法是,您将使用与 DB2 for i 立即兼容的表、 View 和列名称完全重新创建 MySQL 数据库,以便您的工具可以完成该任务。

当然,如果您遇到那么多麻烦,那么在 IBM i 端直接 CREATE TABLE 等可能会很容易,而不是使用不完全符合您需要的中间工具。

关于mysql - 从 MySQL 迁移到 DB2 iSeries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26996937/

相关文章:

SQL:具有变量组/条件的最大行

java - 希望学习OOP语言的AS400程序员。 Java或.Net哪个更好

C# ADO.NET IBM DB2 命名参数具有相同的名称抛出没有足够的参数指定异常

mysql - PHP MySQL 加入帮助

mysql - INSERT 或 UPDATE 不是 mysql 中的主列

mysql - 连接两个表,合并并转置结果

MySQL LEFT JOIN .. ON .. 子句

php - 如何使电子邮件更新数据库?

sql - SQL中的集合和库有区别吗?

c# - 从 .Net 连接到 AS400