SQL SERVER中,如何把一个表中的数据导入到另一个表中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SERVER中,如何把一个表中的数据导入到另一个表中?相关的知识,希望对你有一定的参考价值。
在同一个数据库中,有表A和表B
表A中有字段 a b c
表B中有字段 a b c
两个表中结构可能不太相同,比如主键和关系约束等。
表B中有上千条数据
我只是想把表B中的对应字段的数据导入到表A中,怎么操作呢?
本人SQL只会一知半解,请求高手帮助下,非常感谢。
谢谢大家的回答,还有一个问题,依据大家的答案,我在查询分析器里运行,总是提示“对象名 'B' 无效。”可是B表的表名完全没有错误呀,怎么会无效呢?问题出来哪里呢?谢谢!
再补充下:
这个B表是确实存在的,表名也写的一个字母都不差,两个表都在同一个数据库里,我真是没办法
再问下yanzuoguang同学:
“select * from sysobjects where xtype='U' and name='B'”里“*”和“U”是什么?
1、假如A表存在
则 insert into A(a,b,c) (select a,b,c from B)
2、假如A表不存在
select a,b,c into A from B
3、假如需要跨数据库
insert into ADB.[dbo].A(a,b,c) (select a,b,c from BDB.[dbo].B)
扩展资料:
SQL导入语句
1、如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句
insert into openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\\',
'select * from [aa.DBF]')
select * from 表
说明:
SourceDB=c:\\ 指定foxpro表所在的文件夹
aa.DBF 指定foxpro表的文件名.
2、导出到excel
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'
3、/** 导入文本文件
EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\\DT.txt -c -Sservername -Usa -Ppassword'
参考技术A 我觉得用对了工具,就很简单方便。使用Navicat for sql server,里面有可以直接导出表数据为sql的功能,然后再修改一下导入到别的表就可以了。 参考技术B 同一库内 不同表之间的导入 两表具有相同字段a,b,c 已测insert into 数据库名.dbo A(a,b,c) (select a,b,c from 数据库名.dbo.B ) 参考技术C 比如把a表数据导入b表
insert into b select * from a;
如果是值有几个字段需要
insert into b (cl_1,cl_2,cl_3) select cl_a1,cl_a2,cl_a3 from a; 参考技术D insert into b(copy 出来A表的字段名) select (copy 出来A表的字段名) from a
如何将SQL Server中多个表的数据一次性返回到一张EXCEL工作表(Sheet)中
我通过EXCEL 2003的“数据”--“导入外部数据”--“新建数据库”查询功能从SQL Server中读取数据或者执行一个读取数据的存储过程,并将结果返回到EXCEL工作表中。现在我写了一个查询多个表的数据的存储过程,想将数据一次性返回到EXCEL中,以便节省时间,但是每次只能返回第一张表的数据。
存储过程在查询分析器中的执行效果如下图:
返回给EXCEL后,只能看到第一张表中的数据。
如果内容一致的话可以联合在一起
告诉你一个最简单的方法 根本不用导出
单击左上角 选中所有 然后右击——选择“连同标题一起复制” 最好粘贴到xls里即可 效率最好
希望解决了你的问题追问
这种方法也未尝不可,只是也得多次复制,一次只能复制一张表。我知道我的问题可能没有答案,我希望等下,如果没有更好的解决办法,我选用您的答案。这个答案我本来就会。还有,你真的可以连标题一起复制吗?我用的SQL Server 2005的SQL Server Management Studio。另外,复制出来只能是csv,逗号分隔符文件格式,无法用EXCEL去保存。身份证号粘过去,后三位就变成了0.
追答嗯 如果你硬要这样整的话 也许可以 写个脚本 直接输出 对应好xls(xls要先建立)
这个我是通过xls里 多个sheets 一次性导入到数据库的逆向思维 不知道行不行 我把脚本给你 你可以尝试下
------excel数据导入
---启用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
go
----数据准确
select * into temp_自费
from
OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=E:\hospital\test.xls'
,'select * from [11$]')
select * into temp_医保
from
OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=Yes;IMEX=1;Database=E:\hospital\医保药品维护.xls'
,'select * from [医保 药品$]')
--- 使用完成后,关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
go
select 身份证号,子集编号,...,'','' from table1 union ....
缺少的列用''补齐就可以了追问
说句实在话,这样不行,你去看看UNION到底怎么用的,能不能把日期列和字符列合并为同一列……
追答只是提供点思路供而已。
这问题解决方法应该很多,比如查询时进行类型转换,或VBA+ADO
根据实际灵活选择才是正解。
最好的办法就是编程,通过winform程序导出。我决定写到程序里……
以上是关于SQL SERVER中,如何把一个表中的数据导入到另一个表中?的主要内容,如果未能解决你的问题,请参考以下文章