我需要将一些表从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数据库中。不幸的是,我无法弄清楚是否有办法扭转这种语法。
真的很抱歉,如果这是一个愚蠢的问题,但我没有得到任何牵引力。
答案 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]