转自:http://blog.163.com/haitaosong_accp/blog/static/5523025920094222105655/

原表及数据:(原始表有N个)

tb1
id  aa  bb  cc  dd  stime
1  11  22  33  44  2009-5-18
2  55  66  77  88  2009-5-19

tb2
id  ee  ff  gg  hh  stime
1  12  23  34  45  2009-5-18
2  56  67  78  89  2009-5-19

导入表:tb3(想实现以下效果)

id sname  svalue  stime
1  a01    11    2009-5-18
2  b01    22    2009-5-18
3  c01    33    2009-5-18
4  d01    44    2009-5-18   
5  a01    55    2009-5-19
6  b01    66    2009-5-19
7  c01    77    2009-5-19
8  d01    88    2009-5-19
9  e01    12    2009-5-18
10 f01    23    2009-5-18
11 g01    34    2009-5-18
12 h01    45    2009-5-18
13 e01    56    2009-5-19
14 f01    67    2009-5-19
15 g01    78    2009-5-19
16 h01    89    2009-5-19

想实现把原始表中数据导入tb3表中,其中原始表和导入表不在同一个数据库,表的字段名也不相同,但可以写死,
比如tb1中aa对应的tb3中的就是a01
可以用一个小程序实现,条件就是选择原始表名和时间,点导入就把该表对应时间的数据导入到tb3中

案例一:

create table tb1

(

id  int, aa int,  bb int, cc int,  dd int, stime Datetime

)

create table tb2

(

id  int,  ee int, ff int, gg int, hh int, stime Datetime

)

insert into tb1

select 1,  11,  22,  33,  44 , '2009-5-18 ' union all

select 2,  55,  66,  77,  88,  '2009-5-19 '

insert into tb2

select 1 , 12,  23 , 34,  45,  '2009-5-18 ' union all

select 2,  56,  67,  78,  89,  '2009-5-19  '

select * from tb1

select * from tb2

create table  modelbaby5

(

id int identity(1,1) ,sname varchar(10), svalue varchar(10), stime Datetime

)

create proc  tb1_tb1_TO_modelbaby5

as

insert into  数据库名称.dbo.modelbaby5

SELECT 'A01',AA,stime FROM DBO.TB1

UNION ALL

SELECT 'B01',BB,stime FROM  DBO.TB1

UNION ALL

SELECT 'C01',CC,stime FROM  DBO.TB1

UNION ALL

SELECT 'D01',DD,stime FROM  DBO.TB1

UNION ALL

SELECT 'E01',ee,stime FROM DBO.TB2

UNION ALL

SELECT 'F01',ff,stime FROM DBO.TB2

UNION ALL

SELECT 'G01',gg,stime FROM DBO.TB2

UNION ALL

SELECT 'H01',hh,stime FROM DBO.TB2

exec tb1_tb1_TO_modelbaby5

select *from modelbaby5

案例二:请问如果是不同服务器怎么那条INSERT呢?比如 tb1\tb2 在192.168.1.1服务器上的BASE1数据库中
                     tb3在192.168.1.2服务器上的BASE2数据库中

/*不同服务器数据库之间的数据操作*/

--创建链接服务器

exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '

exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '

--查询示例

select * from ITSV.数据库名.dbo.表名

--导入示例

select * into 表 from ITSV.数据库名.dbo.表名

--以后不再使用时删除链接服务器

exec sp_dropserver  'ITSV ', 'droplogins '

--连接远程/局域网数据(openrowset/openquery/opendatasource)

--1、openrowset

--查询示例

select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

--生成本地表

select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

--把本地表导入远程表

insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

select *from 本地表

--更新本地表

update b

set b.列A=a.列A

from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b

on a.column1=b.column1

--openquery用法需要创建一个连接

--首先创建一个连接创建链接服务器

exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '

--查询

select *

FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ')

--把本地表导入远程表

insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ')

select * from 本地表

--更新本地表

update b

set b.列B=a.列B

FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a

inner join 本地表 b on a.列A=b.列A

--3、opendatasource/openrowset

SELECT   *

FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta

--把本地表导入远程表

转载于:https://www.cnblogs.com/wangpei/archive/2010/01/21/1653395.html

SQL语句实现两个数据库表直接操作相关推荐

  1. Oracle数据库查看表空间sql语句、查看Oracle数据库表空间剩余 、修改表空间、库备份

    一  Oracle数据库查看表空间sql语句 1.oracle查看表空间当前用户 SQL>  select  username,default_tablespace  from user_use ...

  2. jpa 默认生成sql语句_springboot-jpa自动创建数据库表

    第一步创建springboot项目,jpa,mysql, 代码如下: application.yml spring: datasource: url: jdbc:mysql://127.0.0.1:3 ...

  3. 合肥工业大学—SQL Server数据库实验三:SQL语句创建和删除基本表

    SQL语句创建和删除基本表 1. 编写6个基本表 2. 修改基本表结构,完整性约束条件 3. 用Drop table 语句删除基本表 1. 编写6个基本表 设有简单教学管理的6个关系模式如下: 系(系 ...

  4. 导入数据的sql语句,两表互导

    导入数据的sql语句,两表互导 insert into Product(C_ID,Pname,Ptitle,Ptype,IsProduct,onLine,FisrtSort,SecSort,Sort, ...

  5. SQL语句判断指定的数据库、表、字段、存储过程是否存在

    SQL语句判断指定的数据库.表.字段.存储过程是否存在 直接上代码,对大家有用就好! 代码 --判断[TestDB]是否存在 if exists(select 1 from master..sysda ...

  6. SQL语句遍历树结构的数据表

    [转自]:肆尾葱的博客<SQL语句遍历树结构的数据表> 一.创建树结构的数据库表 -- 数据库为 SQL Server create table treeTest(id int,paren ...

  7. 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery )

    一. 前言 在前面的两个章节中,我们分别详细介绍了EF的增删改的两种方式(方法和状态)和EF查询的两种方式( Lambda和Linq ),进行到这里,可以说对于EF,已经入门了,本来应该继续往下进行E ...

  8. mysql怎么对比表结构_mysql怎么对比两个数据库表结构

    mysql怎么对比两个数据库表结构 发布时间:2021-02-03 11:45:58 来源:亿速云 阅读:58 作者:小新 这篇文章主要介绍了mysql怎么对比两个数据库表结构,具有一定借鉴价值,感兴 ...

  9. sql语句跨服务器跨数据库执行

    加为好友 发送私信 在线聊天 wuyi8808 空军 等级: 可用分等级:富农 总技术分:47189 总技术分排名:187 发表于:2009-04-15 21:38:422楼 得分:0 sql语句跨服 ...

最新文章

  1. JS获取URL中参数值(QueryString)的4种方法分享
  2. 【C 语言】变量本质 ( 变量修改 | 直接修改变量 | 通过内存地址间接修改变量 | 通过指针间接修改变量 )
  3. java 线程 wait 一定要同步_Java 线程中调用wait为什么一定要在同步代码块中?
  4. 自学机器学习、深度学习、人工智能学习资源推大聚合
  5. 剑指offer 二叉搜索树的后序遍历
  6. mysql开发问题解决_开发过程中mysql常见问题的解决方法
  7. [html] js放在html的<body>和<head>有什么区别?
  8. centOS安装openoffice的方法
  9. 老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 1...
  10. 0064-简单的平方和
  11. 电子书下载:Pro ASP.NET MVC2 Framework 2nd
  12. hdu 4794 FIb求循环节
  13. 马尔可夫过程及其例题分析
  14. 蒙特卡洛算法与电脑围棋
  15. 《the Great Gatsby》Day 33
  16. 视觉SLAM十四讲学习笔记-第三讲-旋转向量、欧拉角、四元数
  17. 流程工业需要什么样的工控安全?
  18. 三月总结(1.布局)
  19. 平摊分析(后续持续更新)
  20. (1分钟速通面试) 矩阵分解相关内容

热门文章

  1. CentOS6安裝Cacti
  2. 王力宏《十八般武艺》全部歌曲试听
  3. 【知识小课堂】mongodb 之 特殊集合及索引
  4. 【性能优化】 之 几种常见的等待事件的演示示例
  5. Android Studio 设置编辑器背景颜色
  6. 在安装、重装MySQL时出现could not start the service mysql error:0的错误
  7. Android ndk使用
  8. java.lang包—类Class
  9. hiveServer2 和 metastore的一点解读。
  10. 快速附加没有日志文件的 SQL Server 数据库文件!