Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将大型论坛数据从一个系统迁移到另一个系统_Java_Php_Mysql_Sql Server_Database - Fatal编程技术网

Java 将大型论坛数据从一个系统迁移到另一个系统

Java 将大型论坛数据从一个系统迁移到另一个系统,java,php,mysql,sql-server,database,Java,Php,Mysql,Sql Server,Database,我需要将一个相当大的论坛安装从一个系统(自定义,MS SQLServer)迁移到另一个系统(vbulletin,MySQL)。目标系统有许多不同的导入脚本,我计划从中获取想法,但我希望我能在这里得到一些关于它的一些方面的建议 值得注意的是: 原始系统使用Microsoft SQLServer。新系统使用MySQL(模式不同) PHP可以与SQLServer对话吗?如果没有,也许可以使用Java进行迁移,因为它可以与这两种语言进行通信?(新系统是用php编写的,如果可能的话,我们希望所有代码都

我需要将一个相当大的论坛安装从一个系统(自定义,MS SQLServer)迁移到另一个系统(vbulletin,MySQL)。目标系统有许多不同的导入脚本,我计划从中获取想法,但我希望我能在这里得到一些关于它的一些方面的建议

值得注意的是:

  • 原始系统使用Microsoft SQLServer。新系统使用MySQL(模式不同)
    • PHP可以与SQLServer对话吗?如果没有,也许可以使用Java进行迁移,因为它可以与这两种语言进行通信?(新系统是用php编写的,如果可能的话,我们希望所有代码都使用一种语言)
  • 数据量约为1300万个帖子和650k个会员
    • 如有必要,我们可以删减成员(删除那些在过去X年中没有登录并且在活动线程中没有帖子的成员)
    • 如果有必要,我们可以删减线程(删除那些在过去X年中没有新帖子的线程)
    • 即使在删减之后,我们仍然可能有大约750万个帖子
我认为可能引起问题的事情包括:

  • 我不确定是否可以在新系统中保留旧系统的ID(消息或用户)
  • 显然,我无法将旧数据库中的所有1300万条记录加载到内存中,对它们进行处理,然后写入新数据库
  • 我希望能够在以后运行第二次数据迁移,以获取原始导入后的任何新数据(因此,我们可以针对主数据库的备份运行长时间运行的导入,然后在关闭旧系统时运行“其他所有内容”导入)
我目前的想法是:

  • old\u user\u id
    列添加到新的数据库用户表中
  • 从旧数据库迁移用户,将其原始用户id放入新列
  • 使用用户表中的
    old\u user\u id->new\u user\u id
    映射,以X为单位从旧数据库加载线程,并将其插入新数据库
  • 迁移用户时,按创建日期的顺序加载用户,并跟踪最近的日期(在另一个db表中)。这将允许系统在下一次运行时恢复其中断的位置
  • 同样的事情也适用于线程
  • 运行迁移时,首先获取“在存储日期之前创建,但在存储日期之后修改”的所有内容,并使用修改后的信息更新数据库中的记录。完成后,处理此后创建的内容
我为这样一个开放式的问题道歉。这涉及到很多因素,我还没有具体的问题。我真的只是想从过去可能不得不处理类似事情的人们那里得到一些想法/建议。任何关于处理事情的最佳方式的想法,我遗漏的事情,或者我应该注意的边缘案例


编辑:我不知道如何把它变成一个维基。如果有人能帮我转换或告诉我如何转换,我很乐意这样做。显然,它没有一个单一的、正确的答案,因此可能应该将其标记为正确答案。

PHP可以与SQLServer对话吗

您首先要做的是将数据库的数据结构与您将要使用的CMS进行比较,然后您可以确定哪些字段可以更改、更改等等

我假设您将转储整个sql,大多数情况下,您需要搜索并替换更改的数据类型或表名,以便在导入时获得更好的兼容性


此外,您可能还想了解关于php与mssql的问题。这可以为您节省很多麻烦。

太棒了,非常感谢您的链接。虽然我更喜欢使用Java而不是PHP,但将所有代码保存在一种语言中更为重要。将整个表作为SQL转储到磁盘,然后运行搜索和替换可能不是我要走的方向。感觉我在转义数据方面遇到了太多问题,需要能够将旧id映射到新id(即,在插入线程/帖子时,知道新的用户id)。