如何将数据库中一张表的全部内容复制到数据库中另一张表中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将数据库中一张表的全部内容复制到数据库中另一张表中相关的知识,希望对你有一定的参考价值。
我现在有两张表,表a中存有数据,表b字段与表a完全相同,我需要将表a的数据全部添加到表b中,用sql语句如何实现?
使用的是java编程,在dao层实现
1、首先,打开并连接Sql Server,在源数据库Source_db(源数据库名称)上右键,然后依次点击“编写表脚本为”→“CREATE到”→“新查询编辑器窗口”。
2、在第1步产生的编辑器中按”crtl+a“组合键全选内容,然后右键“复制“(或按"crtl+c"键)。
3、新建查询,然后右键”粘贴“(或ctrl+v);如图所示,将代码中Source_db(源数据库名)改为target_db(目标数据库名)。
4、接着右键单击”执行“执行代码。
5、然后,在目标数据库的表结构中就可以看到被复制过来的表了。
参考技术Asql语句:
insert into b select * from a;
sql 语句就是对数据库进行操作的一种语言。
结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;
扩展资料:
1、复制旧表的数据到新表(假设两个表结构不一样):
sql语句:INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表;
2、复制旧表结构到新表:
sql语句:SELECT * INTO 新表 FROM 旧表 WHERE 1=2;
参考资料来源:百度百科-sql语句
参考技术B分为两种情况,一种是目标表不存在,另一种是目标表已存在,语法是不同的。
分别以sqlserver和oracle为例,两者略有不同。
sqlserver中,如果目标表不存在:
select * into 新表名 from 旧表名;sqlserver中,如果目标表已存在:
insert into 新表名 select * from 旧表名;oracle中,如果目标表不存在:
create table 新表名 as select * from 旧表名;oracle中,如果目标表已存在(方法同sqlserver):
insert into 新表名 select * from 旧表名; 参考技术C insert into b select * from a本回答被提问者采纳将整行从一张excel表复制到另一张表的下一个空行
【中文标题】将整行从一张excel表复制到另一张表的下一个空行【英文标题】:Copying entire row from one excel sheet to next empty row of another sheet 【发布时间】:2018-02-01 04:19:02 【问题描述】:我有两张表 data
和 PrevErrCheck
。我正在检查工作表数据中所有出现的变量VarVal
(此变量在PrevErrCheck
的E1 单元格中有数据)并将整行复制到工作表PrevErrCheck
。但我在这里面临的问题是多次运行宏覆盖数据。我想将复制的行保留在工作表数据中,下次运行时,它应该复制到下一个空白行。
我目前正在使用下面的代码,但对如何集成在PrevErrCheck
上查找最后一行的选项并复制下面的行有点困惑
Sub PrevErrCheck()
Dim spem As Workbook
Dim PrevErrCheck As Worksheet
Dim data As Worksheet
Dim xRg As Range
Dim xCell As Range
Dim I As Long
Dim J As Long
Dim K As Long
Set spem = Excel.Workbooks("SwitchPortErrorMonitor.xlsm")
Set PrevErrCheck = spem.Worksheets("PrevErrCheck")
Set data = spem.Worksheets("data")
spem.Worksheets("PrevErrCheck").Activate
VarVal = PrevErrCheck.Cells(1, "E").Value
I = data.UsedRange.Rows.count
J = PrevErrCheck.UsedRange.Rows.count
If J = 1 Then
If Application.WorksheetFunction.CountA(PrevErrCheck.UsedRange) = 0 Then J = 0
End If
Set xRg = data.Range("X:X")
On Error Resume Next
Application.ScreenUpdating = False
J = 3
For K = 1 To xRg.count
If CStr(xRg(K).Value) = VarVal And Not IsEmpty(VarVal) Then
xRg(K).EntireRow.Copy Destination:=PrevErrCheck.Range("A" & J + 1)
PrevErrCheck.Range("X" & J + 1).ClearContents
J = J + 1
End If
Next
Application.ScreenUpdating = True
End Sub
【问题讨论】:
所以你得到一个错误?哪个错误,在哪一行?请在您的问题中包含这一点。J = J + 1
也许
首先删除On Error Resume Next
。此语句使您在调试过程中失明,它使所有错误消息静音,但错误仍然存在。如果没有适当的错误处理,则应该永远不要使用它!
【参考方案1】:
你在循环之前有J = 3
,这可能是个问题。 xRg.count
总是返回 1048576,你应该使用更具体的东西。试试这个:
Set spem = Excel.Workbooks("SwitchPortErrorMonitor.xlsm")
Set PrevErrCheck = spem.Worksheets("PrevErrCheck")
VarVal = PrevErrCheck.Cells(1, "E").Value
If IsEmpty(VarVal) Then Exit Sub
Set data = spem.Worksheets("data")
spem.Worksheets("PrevErrCheck").Activate
I = data.UsedRange.Rows.Count
J = PrevErrCheck.UsedRange.Rows.Count + 1
If J = 2 Then
If IsEmpty(PrevErrCheck.Cells(1, 1)) Then J = 1
End If
' If J = 1 Then
' If Application.WorksheetFunction.CountA(PrevErrCheck.UsedRange) = 0 Then J = 0
' End If
' Set xRg = data.Range("X:X")
' On Error Resume Next
' Application.ScreenUpdating = False
' J = 3
For K = 1 To I
If CStr(data.Cells(K, "X").Value) = VarVal Then
data.Cells(K, 1).EntireRow.Copy Destination:=PrevErrCheck.Range("A" & J)
PrevErrCheck.Range("X" & J).ClearContents
J = J + 1
End If
Next
' Application.ScreenUpdating = True
End Sub
【讨论】:
以上是关于如何将数据库中一张表的全部内容复制到数据库中另一张表中的主要内容,如果未能解决你的问题,请参考以下文章
在 MySQL 中,如何将一张表的内容复制到同一个数据库中的另一张表中?
在 MySQL 中,如何将一张表的内容复制到同一个数据库中的另一张表中?
sql如何查询出一张表的的某个字段数据更换成另一张表的字段数据