MSSQL 到 MYSQL - 从 MSSQL 中选择,插入 MySQL

Posted

技术标签:

【中文标题】MSSQL 到 MYSQL - 从 MSSQL 中选择,插入 MySQL【英文标题】:MSSQL to MYSQL - Select from MSSQL , Insert into MySQL 【发布时间】:2018-03-19 09:48:53 【问题描述】:

我试图建立一个从特定查询记录集从 MSSQL (express 2008) 到 mysql 的单向同步。这是那个查询。

SELECT [datafk]
  ,[datahistorypk]
  ,[date]
  ,[displayText]
FROM [FCentral].[dbo].[DataHistory]

WHERE [sampleNr] = 
    (SELECT MAX (sampleNr) FROM [FCentral].[dbo].[DataHistory])

这会产生多个结果。我需要将这些结果中的每一个插入到我的“链接服务器”远程连接的 MySQL 数据库表中。

此代码适用于 SSMS,并且确实插入到我的 MySQL 数据库中。

EXEC (' INSERT INTO  `farms`.`CCData` (
       `datafk` ,`datahistorypk` ,`date` ,`displayText` )
      VALUES ("222",  "13",  "2017-10-19 14:25:05",  "TEST"); ')
at BPF_REMOTE

最终我将需要安排此查询自动运行,如果在 MSSQL 表中检测到更改可以运行它会很好,但这可能超出我的能力范围。

我觉得我很接近,我只是在努力获得从 MSSQL 转换为 MySQL 的正确语法。任何人都可以指出一个很好的例子或帮助我解决这个问题吗?

【问题讨论】:

【参考方案1】:

在 SQL Server 中设置 linked server 并进行常规插入:

INSERT INTO BPF_REMOTE.farms.CCData(datafk, datahistorypk, date, displayText)
    SELECT [datafk], [datahistorypk], [date], [displayText]
    FROM [FCentral].[dbo].[DataHistory]
    WHERE [sampleNr] = (SELECT MAX (sampleNr) FROM [FCentral].[dbo].[DataHistory]);

【讨论】:

无效的对象名称“BPF_REMOTE.farms.CCData”。我需要做一些特殊的事情来将 LinkedServer DB 设置为对象吗? @TrippWilliamson 。 . .是的。按照链接中的说明进行操作。 我遵循了另一组说明并使用 SSMS 来设置链接,我真的看不出 sp_addlinkedserver 与 SSMS 的工作方式有何不同。 ----我或多或少这样做了“您也可以使用 SQL Server Management Studio 定义链接服务器。在对象资源管理器中,右键单击服务器对象,选择新建,然后选择链接服务器。” ----- 这个是我跟随的指南。 mssqltips.com/sqlservertip/4570/… 我相信我需要将您的查询转换为使用 openquery 来完成这项工作。

以上是关于MSSQL 到 MYSQL - 从 MSSQL 中选择,插入 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

仅将表数据从 MSSQL 迁移到 MySQL

将数据库数据从 mssql 迁移到 mysql

从 MSSQL 迁移到 MYSQL 错误 1064 MYSQL Workbench

使用 Workbench 从 MSSQL 迁移到 MySQL 时未从源中检索模式列表

Mssql 2012 与 PHP & Mysql 到 Mssql 迁移

从成本角度来看,在 MySQL 上使用 MSSQL 的理由 [关闭]