MySQL技巧之跨服务器数据查询:进阶篇-从A数据库复制到B数据库的表中
基础篇已经描述:借用微软的SQL Server + ODBC 即可实现MySQL跨服务器间的数据查询。
而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的连接名: MY_ODBC_MYSQL
以及用同样的方法,做的另一个连接名 MY_ODBC_MYSQL2
还实现了第一次查询,在MS SQL Server打开一个新查询,输入以下脚本:
SELECT Q.country_code, Q.country_name
FROM OPENQUERY(MY_ODBC_MYSQL, ’
SELECT country_code, country_name FROM country
WHERE Code = ‘‘IR’’
') AS Q
跨服务器的查询语句、更新语句已经学会了,跨服务器的插入语句又该如何写呢?
我摸着石头过河,你搭着我肩膀过河吧。
– 插入语句 从A数据库复制到B数据库的表中,假设My_ODBC_MYSQL连接A数据库,My_ODBC_MYSQL2连接B数据库
DECLARE @QryStr nvarchar(4000) – 查询脚本
SET @QryStr =
’
INSERT INTO OPENQUERY(My_ODBC_MYSQL2, ‘’
SELECT country_code, country_name
FROM country LIMIT 0, 1’')
SELECT Q.country_code, Q.country_name
FROM OPENQUERY(My_ODBC_MYSQL, ‘’
SELECT cty.country_code, cty.country_name
FROM country cty
WHERE 1 = 1
‘’) AS Q
';
PRINT @QryStr; – 这是调试的技巧,小本子抄下。
EXEC(@QryStr); – 执行脚本的另一个写法
注意:请记住以上套路,特别注意单引号的个数。这里为什么是二个单引号?
有大用的吐血技巧:SELECT country_code, country_name FROM country LIMIT 0, 1 就是为了获得一下目标表的结构。
加点难度,如果我只要把A库中沙特的一行查出来,添加到B库呢,又该怎么写?
– 插入语句 从A数据库复制到B数据库的表中,假设My_ODBC_MYSQL连接A数据库,My_ODBC_MYSQL2连接B数据库
DECLARE @QryStr nvarchar(4000) – 查询脚本
SET @QryStr =
’
INSERT INTO OPENQUERY(My_ODBC_MYSQL2, ‘’
SELECT country_code, country_name
FROM country LIMIT 0, 1’‘)
SELECT Q.country_code, Q.country_name
FROM OPENQUERY(My_ODBC_MYSQL, ‘’
SELECT cty.country_code, cty.country_name
FROM country cty
WHERE country_code = ‘’’‘’ + ‘SA’ + ‘’‘’‘’ +
’ ‘’) AS Q
';
PRINT @QryStr; – 这是调试的技巧,小本子抄下。
EXEC(@QryStr); – 执行脚本的另一个写法
注意:请记住以上套路,特别注意单引号的个数。为什么加个动态参数沙特,拼接就要用四个单引号呢?基础篇有描述!我摸着石头过河,你搭着我肩膀过河吧。
妙!高!实在是高!
加粉丝看
MySQL技巧系列之《未经证实的葵花宝典》:一篇可以当饭吃的MySQL文章,值得收藏
总结:借用微软的SQL Server + ODBC 即可实现MySQL跨服务器间的数据查询。使用 INSERT INTO OPENQUERY(…),实现跨服务器间复制(插入)记录,轻松实现从A数据库复制到B数据库的表中。