如何实现mysql和mssql的数据同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现mysql和mssql的数据同步相关的知识,希望对你有一定的参考价值。

方法/步骤

1
下载安装SQLyog v10.51,确保本机安装了mysql和Sql server 2008 r2。
使用SQLyog连上本地mysql数据库
点数据库>导入>导入外部数据 进入SQLyog外部数据导入向导,选择“开始新的工作”,点“下一步”

在数据源类型中只有access、excel、csv、任何odbc数据源。使用前面三个中间数据格式转换方式都可以导入不过就麻烦了。这里我们选择任何ODBC数据源

再点击“建立新的DSN”,弹出窗口“创建新数据源”,我们选择“系统数据源”并进入下一步

选择数据源驱动“SQL Server”,进入下一步点“完成”

设置一个数据源名称,并填写你的SQL服务器IP,如果是本地服务器可以直接下拉框选择。

输入登录账号密码(看你的SQL服务器是哪种登录验证方式),填写好了就下一步、下一步、完成。

弹出配置信息窗口后就可以点“测试数据源”,看是否连接到服务器

再回到导入向导,选下一步。
设置要导入的本地目标数据库之后下一步,再选择“拷贝数据到本地”下一步,勾选你要导入的数据表,后面还可以相应设置每个表要拷贝到本地那个数据表名称,然后下一步就开始拷贝数据至本地MYSQL。
参考技术A 当然可以啊,当用户切换到论坛的时候你把session中的值取出来在mysql中间再查询一边不就可以了,论坛有入口啊,共享session值就可以了

如果我在 Java 中查询,如何组合来自 mssql 数据库和 mysql 数据库的数据?

【中文标题】如果我在 Java 中查询,如何组合来自 mssql 数据库和 mysql 数据库的数据?【英文标题】:How can I combine data from a mssql database and a mysql database if I am querying in Java? 【发布时间】:2019-11-16 07:49:17 【问题描述】:

我正在尝试对存储在两个单独数据库中的数据进行一些分析,其中一个是 mysql 服务器,另一个是 mssql。它们需要基于其中一列连接,因此我最终得到一个数据结构。

我尝试将数据单独存储到 python 中的 pandas 数据帧中,将它们加入 pandas,然后写入 csv 并将其加载回 java。但这做起来很麻烦,而且可扩展性也不强。

本质上,我有两个这样的查询:

MySQL

String myDriver = "org.gjt.mm.mysql.Driver";
String myUrl = "jdbc:mysql://localhost/test";
Class.forName(myDriver);
Connection conn = DriverManager.getConnection(myUrl, "root", "");
String query = "SELECT * FROM users";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);

mssql

String url = "jdbc:msql://someMSsqlserver/";
Connection conn = DriverManager.getConnection(url,"","");
Statement stmt = conn.createStatement();
ResultSet rs;
rs = stmt.executeQuery("SELECT * FROM people");

我希望将它们连接到一个数据结构中。无论如何,这可以在 Java 中本地完成吗?

【问题讨论】:

并非没有在 java 中手工完成。您可以将表从一个数据库复制到另一个数据库吗? 我不太可能获得这样做的权限。可以以任何可行的方式组合结果集吗?还是需要将它们转换为其他对象然后使用? MySQL 的 MariaDB 分支拥有一个 CONNECT 存储引擎,允许在 MariaDB 服务器上的 SQL 查询中使用 SQL Server 上的表。 mariadb.com/kb/en/library/… 要使用它,您需要使用 MariaDB、对 MariaDB 的管理员访问权限以及对 SQL Server 数据库的 ODBC 样式访问权限。 “无论如何,这可以在 Java 中本地完成吗?” 是的。现在阅读Why is “Is it possible to…” a poorly worded question? 不容易。卷起袖子。 【参考方案1】:

您应该将结果映射到 POJO Arraylist,然后将它们合并。

你也可以把它们放在第三个数据库中,然后你就可以做任何sql查询了。

【讨论】:

【参考方案2】:

您可以尝试的各种策略:

    使用您的 Java 程序在服务器 A 上创建一个临时表,然后从服务器 B 复制您需要的数据(在服务器 B 上使用 SELECT 并在服务器 A 上使用 INSERT)。然后在服务器 A 上执行适当的查询,以将该服务器上已有的表与临时表连接起来。您可能有权在任一服务器上创建临时表。

    如果您有权创建永久表,请在服务器 A 上使用永久表。然后,每当数据被一个 Java 程序更改时,将数据从服务器 B 复制到服务器 A,并使用另一个 Java 程序查询它。

    将两个表中较小的一个表中的数据放入 Java 程序中的 HashMap 中,其中 HashMap 的键是连接变量。然后逐行处理较大表中的结果集,在 HashMap 中查找连接条目。

    切换到 MariaDB 并使用 CONNECT 存储引擎使您的 SQL Server 表可用于您的 MySQL 查询。

您如何选择策略?这取决于很多事情。您可以从您的 DBA krewe 那里获得多少合作?你的桌子有多大?你总是处理所有的行,或者有时是一个子集吗? (您的示例查询没有WHERE 子句,所以也许您正在处理所有内容。)您能否在JVM 实例中获得足够的RAM 来容纳整个表?您需要每小时执行多次,还是每周执行一次?每次做一次大概需要多少时间?

专业提示:对于像您的示例这样的查询,请先给出 SQL 命令 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;(在两种服务器上),这样您就不会在检索您的数据时阻止其他程序访问您的表结果集。

【讨论】:

以上是关于如何实现mysql和mssql的数据同步的主要内容,如果未能解决你的问题,请参考以下文章

mysql实时同步到mssql的解决方案

mssql数据库,数据库同步,分布式数据库,数据库集群,如何实现

是否可以从 MySQL 和 MSSQL 同步两个链接服务器中的两个表?

多台mssql2005数据库远程同步更新

如何把sqlserver数据同步到mysql

mssql如何将一个数据库中的表同步到另一个数据库中 做成事务