从MSSQL表到链接的MySQL服务器的SSMS“SELECT * INTO”

时间:2017-02-14 00:30:57

标签: mysql sql-server ssms

我需要将一些表从MSSQL服务器传输到MySQL服务器。

我已成功将Windows主机上的SSMS连接到我的linux机箱上的MySQL服务器。 “链接服务器”出现在对象资源管理器中,我可以在MySQL服务器上执行查询。

sql select * from openquery(LINKED_SERVER_NAME, "select * from mysqltable.customers");

我是MSSQL的一个彻头彻尾的菜鸟,我对openquery感到有些困惑。查询是“只读”,还是我可以在链接服务器上的表中实际选择MSSQL表的内容?

我读过的所有MSDN页面都让人想起80年代那些旧的霹雳舞教学视频。 I.E.一个非常简洁的例子,然后是彻头彻尾的疯狂。

我已经看到了很好的示例,展示了如何使用openquery将远程 MySQL数据库的内容选择到MSSQL数据库中。不幸的是,我无法弄清楚是否有办法扭转这种语法。

真的很抱歉,如果这是一个愚蠢的问题,但我没有得到任何牵引力。

2 个答案:

答案 0 :(得分:0)

缓慢且可能很糟糕的答案

使用@McNets / Amir Mohtasebi@bluefeet提供的线索,我已经能够将某些东西融合在一起。

我试图直接将MSSQL表复制到MySQL数据库中。我还不清楚它是否有可能是openquery。

循环查询结果并逐个插入记录

declare @i int=0
declare @count int
declare @idcustomer int
declare @customerType int 

select @count = count(*) from customers

while (@i < @count)
begin
    select @idcustomer = idCustomer, @customerType = customerType from customers
    order by idcustomer asc offset @i rows fetch next 1 rows only

    insert openquery(
        REMOTE_STORE,
        'select idcustomer, customerType from customers where 1=0'
    ) values(
        @idcustomer,
        @customerType)

    set @i = @i + 1;
end

正如人们所预料的那样,这只需要永远的南方,并且需要为每个领域进行设置。如果有人有更好的技术(可能任何人使用T-SQL),我很乐意看到它。

答案 1 :(得分:0)

您是否只使用以下语法尝试基本查询:

  

从openquery(LINKED_SERVER_NAME,&#34; select * from mysqltable.customers&#34;)中选择* 到新表格;

OR

  

从[linkedserver]中选择* 到新表格。[数据库]。[架构]。[tablename]