您的位置:首页 > 理论基础 > 计算机网络

tx一卡通复制上月排餐误点月份从备份里出排餐表查找的网络资料

2017-02-04 14:45 267 查看
select * into pcCOPY from pC 备份一下表以防万一

truncate table pc 删除表内容

因为有标识列,还原过来又是两个数据库,最后没有用如下语句,而是在SQL2005的导入数据功能复制备份过来的表

 




sql复制表、拷贝表、临时表

--insert into pppcopy select * from ppp //从表ppp中获取数据,并将其插入到pppcopy中,只拷贝表的数据,不拷贝表的结构(前提:表pppcopy1存在)

--select * into pppCopy1 from ppp //将ppp中的数据拷贝到 pppcopy1中,拷贝表的数据以及表的结构(前提:表pppcopy1不存在)

--select * into pppCopy2 from ppp where 1=0// 将ppp的表结构拷贝到pppcopy2,不拷贝数据(前提:表pppcopy1不存在)

--create table #temp(num int primary key,pname varchar(20))//创建局部临时表

--create table ##temp(num int primary key,pname varchar(20))//创建全局临时表,当sql服务断开时删除

局部临时表与全局临时表区别与示例

1、局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除。 

2、全局临时表(##开头)对其它连接也有效,在当前连接和其他访问过它的连接都断开时自动删除。 

3、不管局部临时表还是全局临时表,只要连接有访问权限,都可以用drop table #Tmp(或者drop table ##Tmp)来显式删除临时表。

4000

一、如果两个数据库在同一台服务器上

1、复制表结构和数据:SELECT * INTO DatabaseB.dbo.TableB FROM DatabaseA.dbo.TableA

2、仅仅复制表结构:SELECT * INTO DatabaseB.dbo.TableB FROM DatabaseA.dbo.TableA WHERE 1=2

3.拷贝相同表结构的某一行数据:

insert into b(a, b, c) select <span style="font-family:宋体;">a,b,c</span> from b;  

例 

[sql] view
plain copy

insert INTO B.dbo.third_code_formula( experiment_id,code_formula,porcelain,glass,batch_one,batch_other) select  experiment_id,code_formula,porcelain,glass,batch_one,batch_otherfrom third_code_formula WHERE id=25  

4.更新相同表结构的某一行数据

[sql] view
plain copy

update [a].[dbo].[a1]  

set name = aaa.name  

from [b].[dbo].[b1] as aaa  

where [a].[dbo].[a1].[id] = aaa.id   



[sql] view
plain copy

update B.dbo.third_code_formula  

 set  experiment_id=sss.experiment_id,code_formula=sss.code_formula,porcelain=sss.porcelain,glass=sss.glass,batch_one=sss.batch_one,batch_other=sss.batch_other  

from A.dbo.third_code_formula as sss  

 WHERE B.dbo.third_code_formula.id=sss.id  

注:sss是数据表A的别名

二、如果两个数据库在不同的服务器上

分为导出和导入两种,都需要先连接远程数据库,再进行操作。如何连接远程数据库?

在连接远程数据库之前,需要先打开Ad Hoc服务,依次执行下面四句语句(不要一次执行):

EXEC sp_configure "show advanced options",1

RECONFIGURE

EXEC sp_configure "Ad Hoc Distributed Queries",1

RECONFIGURE

这样就可以连接远程数据库了:

SELECT * INTO DatabaseB.dbo.TableB FROM opendatasource( 'SQLOLEDB',  'Data Source=IP/ServerName;User ID=SA;Password=***' ).DatabaseA.dbo.TableA WHERE 1=2

记住,为了安全起见,执行完成之后,请关闭Ad Hoc服务:

EXEC sp_configure "Ad Hoc Distributed Queries",0

RECONFIGURE

EXEC sp_configure "show advanced options",0

RECONFIGURE 

三、


两台服务器上两个数据库结构不同的表之间数据复制解决办法!!!

 http://www.uipower.com/bbs/thread-35773-1-1.html

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

--创建链接服务器 

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 * fromopenrowset('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 ainner join 本地表


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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: