如何将数据库中一张表的全部内容复制到数据库中另一张表中

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、然后,在目标数据库的表结构中就可以看到被复制过来的表了。

参考技术A

sql语句:

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 【问题描述】:

我有两张表 dataPrevErrCheck。我正在检查工作表数据中所有出现的变量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如何查询出一张表的的某个字段数据更换成另一张表的字段数据

两个表匹配,匹配上把一张表的值复制到另一张表的sql语句怎么写

如何将数据库中一张表的多列映射到类中的一个数组/列表?

mysql快速复制一张表的内容,并添加新内容到另一张表中