精华内容
下载资源
问答
  • sql一张表数据导入另一张表

    千次阅读 2016-10-09 15:55:32
    sql一张表数据导入另一张表   如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: INSERT INTO 目标 SELECT * FROM 来源;   比如要将 articles 插入到 newArticles 中,则是: ...
    sql一张表数据导入另一张表 
    
     
    如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:

    INSERT INTO 目标表 SELECT * FROM 来源表;
     
    比如要将 articles 表插入到 newArticles 表中,则是:
     
    INSERT INTO newArticles SELECT * FROM articles;
     
    如果只希望导入指定字段,可以用这种方法:
      
    INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表;
     
    注意字段的顺序必须一致。
    展开全文
  • sql一张表数据导入另一张表 1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: INSERT INTO 目标 SELECT * FROM 来源; 2.比如要将 articles 插入到 newArticles 中,则是: ...
    sql一张表数据导入另一张表
     
    1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:
     
    INSERT INTO 目标表 SELECT * FROM 来源表;
     
    2.比如要将 articles 表插入到 newArticles 表中,则是:
     
    INSERT INTO newArticles SELECT * FROM articles;
     
    3.如果只希望导入指定字段,可以用这种方法:
      
    INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表;
     
    注意字段的顺序必须一致。
     
    下面一段代码是我实际工作中用到的,我记录一下,思路是:
    先备份整个表的数据,然后进行更新,没问题就完成任务了,有问题请紧急还原表的数据,期间有数据变动,我不知道如何是好,大家是否有好的建议。
     
    --1 先备份短信用户表数据
    SELECT * INTO SMSUSERACCOUNT_20150605 FROM SMSUSERACCOUNT;
    
    --2 找到所有额度不为0的账号
    SELECT * FROM  SMSUSERACCOUNT
    WHERE CREDIT <>0;
    
    --3 先更新短信余额 = 当前短信余额+额度
    UPDATE SMSUSERACCOUNT
    SET REMAININGNUMBER = REMAININGNUMBER+CREDIT
    WHERE CREDIT <>0;
    
    --4 将所有账号的额度全部清零
    UPDATE SMSUSERACCOUNT SET CREDIT =0;
    
    --紧急还原全表数据(如果2张表的字段一致,并且希望插入全部数据,可以用这种方法)
    SELECT * FROM SMSUSERACCOUNT;
    DELETE FROM SMSUSERACCOUNT;
    SELECT * FROM SMSUSERACCOUNT;
    INSERT INTO [OpenMasBak].[dbo].[SMSUSERACCOUNT]
               ([ApplicationCode]
               ,[ApplicationName]
               ,[UserId]
               ,[AccountCode]
               ,[AccountName]
               ,[RemainingNumber]
               ,[Credit]
               ,[AllCount]
               ,[SettlementDate]
               ,[SplitAccount]
               ,[Enabled]
               ,[DeletionStateCode]
               ,[Description]
               ,[CreateOn]
               ,[CreateUserId]
               ,[CreateBy]
               ,[ModifiedOn]
               ,[ModifiedUserId]
               ,[ModifiedBy])
        select [ApplicationCode]
               ,[ApplicationName]
               ,[UserId]
               ,[AccountCode]
               ,[AccountName]
               ,[RemainingNumber]
               ,[Credit]
               ,[AllCount]
               ,[SettlementDate]
               ,[SplitAccount]
               ,[Enabled]
               ,[DeletionStateCode]
               ,[Description]
               ,[CreateOn]
               ,[CreateUserId]
               ,[CreateBy]
               ,[ModifiedOn]
               ,[ModifiedUserId]
               ,[ModifiedBy] from [SMSUSERACCOUNT_20150605]
    GO
    
    /*如果表中没有自增列可以使用这一段sql
    --紧急还原全表数据(如果2张表的字段一致,并且希望插入全部数据,可以用这种方法)
    INSERT INTO SMSUSERACCOUNT SELECT * FROM SMSUSERACCOUNT_20150605;
    
    --紧急还原某些字段(短信余额和额度)
    INSERT INTO SMSUSERACCOUNT (Credit, RemainingNumber) SELECT Credit, RemainingNumber FROM SMSUSERACCOUNT_20150605;
    */

     

    转载于:https://www.cnblogs.com/wohexiaocai/p/4537900.html

    展开全文
  • 一、第一我们假设A是主,B是副,业务需求是是将A数据导入到B,好那么我们需要做的就是采用dblink的方式,将A所有数据查询出来然后插入到B。ps:这里我将给出一张测试用USR(A,B两张都是USR)...

    首先我们先明确需求是什么

    一、第一我们假设A表是主表,B表是副表,业务需求是是将A表的数据导入到B表,好那么我们需要做的就是采用dblink的方式,将A表所有数据查询出来然后插入到B表。ps:这里我将给出一张测试用表USR(A,B两张表都是USR)

    操作如下:

    1、首先我们登录A表数据库,然后以system身份登录

    2、赋予源库的用户xxx(这里就是)创建dblink的权限我这里是lyq(这个是你数据库用户,看你自己的就好)

    语句如下:grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to LYQ;  

    然后我们查询下赋予权限是否成功,语句如下:

    select * from user_sys_privs where privilege like upper('%DATABASE LINK%');

    3、用LYQ身份登录数据库,然后创建dblink

    create database link DBLINK_TEST connect to scott identified  by "123456" using '172.16.159.26:1521/test';

    好了到这一步我们需要进行详细的说明,首先看语句中的SCOTT,这个是B表所属数据库的用户名; identified  by "123456"这里的123456是B表数据库的密码;172.16.159.26:1521/test,这里的172.16.159.26:1521,是B表所在的数据的地址,1521为Oracle端口号,test是数据库名。

    在创建dblink结束后我们将其重命名一下(同义词):

    create or replace SYNONYM USER_COPY for "USR" @DBLINK_TEST;

    然后我们测试下创建dblink成功没有,执行下边的语句

    select * from USER_COPY;

    在平时创建时我们可能会创建失败这个时候就需要删除dblikn还有同义词,我将语句放在下边

    drop database link DBLINK_TEST;
    drop synonym USER_COPY;
    

    4、将A表数据导入到B表

    这里我们是跨库操作所以创建了dblink,有了dblink我们执行下边这句sql就好了

    大致格式:insert into USER_COPY select * from tableA (这里可以输入过滤条件,比如where id=xxx)

    注意这里的 USER_COPY就是我们的B表,没看明白的返回去看看第3步,执行晚之后我们看看B表的数据

    到这里就完事了

    二、数据同步

    数据同步,我这里的遇到的业务需求是将A表所有数据导入到B表,然后当A表中有DML(增删改)操作时B表也要随之变化,在这里有第一步做铺垫我们后续工作就方便了,思路就是dblink配合TRIGGER(触发器),一旦检测到DML操作时我们就更新B表

    1、用system身份登录A表所属数据库对角色(LYQ)进行赋权

    GRANT CREATE ANY PROCEDURE TO "LYQ" ;
    GRANT CREATE ANY SEQUENCE TO "LYQ" ;
    GRANT CREATE ANY TRIGGER TO "LYQ" ;
    GRANT CREATE ANY TABLE TO "LYQ" ;
    GRANT UNLIMITED TABLESPACE TO "LYQ" ;
    GRANT CREATE DATABASE LINK TO "LYQ" ;
    

    如果需要移除权限用下边的这条语句

    REVOKE SELECT ANY PROCEDURE FROM "LYQ";

    2、切换回LYQ数据库角色,创建dblink

    这里我们要创建dblink,步骤就是“一中的第3步”

    3、创建触发器(重点)

    代码如下:

    CREATE OR REPLACE TRIGGER ds_trigger 
    BEFORE INSERT OR UPDATE OR DELETE ON ANLIKU.USR FOR EACH ROW
    declare
        integrity_error exception;
        errno            integer;
        errmsg           char(200);
        dummy            integer;
        found            boolean;
    BEGIN
        IF inserting THEN
          insert into USER_COPY(ID, NAME, AGE) values(:NEW.ID, :NEW.NAME, :NEW.AGE);
    ELSIF updating THEN
    UPDATE USER_COPY SET ID=:NEW.ID, NAME=:NEW.NAME, AGE=:NEW.AGE WHERE ID=:OLD.ID;
    ELSIF deleting THEN
    DELETE FROM USER_COPY WHERE ID=:OLD.ID;
        END IF;
    exception
        when integrity_error then
           raise_application_error(errno, errmsg);
    END;
    
    如果创建失败了就需要删除触发器重新创建,删除语句如下
    DROP TRIGGER ds_trigger;
    

     

    总结:好了到这里我们关于数据库同步的问题就算是解决了,思路就是触发器还有dblink,当然了也可以采用定时器的然后到一定的时间执行数据库的备份,有需要的朋友可以自行百度,谷歌找一找相关的博客,我这里提供了两个思路,在我本地完全能够运行,如果报错没有网络监听就需要配置Oracle网络。

     

     

     

     

     

     

     

     

    展开全文
  • sql将一张表数据导入另一张表

    万次阅读 2019-03-21 09:01:43
    首先我这有两份数据; 两张的内容如下: 执行sql 语句: 四句sql语句对应如下: 1, insert into yu name,age select name,2 as age from ziyao; 2,insert into yu (name,age) select name,age from ziyao; 3,...

    首先我这有两份数据;

    在这里插入图片描述

    两张表的内容如下:

    在这里插入图片描述

    执行sql 语句:

    在这里插入图片描述
    四句sql语句对应如下:

    1, insert into yu name,age select name,2 as age from ziyao;
    2,insert into yu (name,age) select name,age from ziyao;
    3,insert into yu (name) select name from ziyao;
    4,insert into yu name select name from ziyao;
    

    可见加了括号的没有报错,没有加括号的报错了!

    通用语法:insert into 表一(字段一,字段二,) select 字段一,字段二 from 表二;

    展开全文
  • 1 INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,…) select field1',field2',… from Table1 ...(1)要求目标Table2必须存在,并且字段field,field2…也必须存在 (2)...
  • 有两张表一张明为GTYTGHFL一张名为DLTB_YJ,两张都有自己的字段,现在要将DLTB_YJ中的数据复制在GTYTGHFL中,两个中有相同字段 1.右键GTYTGHFL选择“加载”,在“加载”中选择“数据加载”出现下面页面 2....
  • -- 语法 INSERT INTO news(要导入表的字段) SELECT (数据源的对应字段) FROM Article_News where 条件 INSERT INTO news(title,content) SELECT N_title,N_content FROM Article_News where N_id<3000
  • 现在市面上有很多厂商将spark以及hadoop的生态组件产品化,在ui界面上拖拽来的组件里编写spark sql,或者写spark代码(java,scala,python),类似于传统的数据集成工具datastage,informatica,kettle,将各个组件...
  • mysql 根据一张表数据更新另一张表 sql示例 update a ,b  set  a.name = b.name  where a.id = b.id 一)在同一个数据库服务器上面进行数据间的数据导入导出: 1. 如果tb1和...
  • 对于已存在的: insert into table_target(字段1,字段2....) select (字段1,字段2....) from table_source 对于尚未建立的: select (字段1,字段2....) into table_target from table_source 转载于:...
  • insert into 1(字段1,字段2,.....)select 对应字段1,对应字段2,..... from 2 假如1中有字段不为空,而2的对应字段值中恰好有null值,此时可以使用decode()函数 insert into 1(字段1,字段2,字段3,.....)...
  • 将一个中的数据导入另一张表中 写在前面的话:不管是网站开发中还是应用程序开发中,我们都会经常遇到需要将数据从一个中导入导入到一个中,甚至需要指定导入字段。 1、如果需要导入数据的中结构和源...
  • 今天下午休息的时候又被扔给一项任务:把全国的街道数据导入街道。但是他们扔给我的SQL脚本是从网上down的一个,跟平台这边的数据库设计的完全不一样。  当时的思路是:先把扔给我的脚本在本地生成一个,然后...
  • 模 板:  insert into 表名1(列名1,列名2,列名3)  valuses(select 列1,列2,列3 from 表名2) 不带条件的样 例 语 句:  insert into t_case_1229_head(caseid,userid,branch)  select DISTINCT id,userid,...
  • 比如说将A中的phone与B中的phone对应上,关联是两张的usr_id是一致的 update usr_account a ,usr_info b set a.phone=b.phone where a.usr_id=b.usr_id 测试效果是有用的 好像还有其他方式,喜欢探究的可以去...
  • 类似与sql server 的语句,从一个中取得一些数据导入一个新或者已经存在的 sql server : select [column1, column2, ...] into new_table from old_table ; -- 加入到新中 insert into end_table...
  • oracle数据库中经常遇到要从一张表另一张表导入数据的情况, 使用下列语句即可字段相同的两个之间的数据传递,   insert into user.目标 select *from user.原  ...
  • 由于mysql不支持select into 方法,mysql怎样将一张表的查询结果存到另一张表中? 找了两个方法 第一种: create table dust select * from student;//用于复制前未创建新dust的情况下 第二种 insert ...
  • 我用的是sqlserver现在数据库有所改动,想把原来表里的数据查出来,插入到现在的表里。现在的表里在以前的基础上添加了字段。
  • 我现在需要将A 数据导入到B中.但是A于B数据结构不同.而且A的数据在B中有的是需要更新有的是需要插入. A的结构为 订单ID 订单号 手机号 预定人 预定时间 订单状态 起始地 目的地 1000 2012010398 ...
  • 假如test1和test2的表字段都一样,将test1数据导入到test2,一般用于测试、备份、数据更新的情况 【test1不存的情况】 部分字段:select * into test2 from test1 部分字段:select field1,field2 into ...
  • INSERT INTO primus_pms.brand (id, `name`,pic) SELECT brand_id ,`name`,icon FROM primus_merchant.shop_brand GROUP BY brand_id,icon,`name`
  • // 清空数据表 $result = DB :: select(DB :: raw($sqlQuery)); $dd = DB::connection('zsql')->table('sign_up_config')->get()->toArray(); // 链接其他数据库 查询数据 $new = []; foreach ($dd as $k => $v) { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,377
精华内容 35,750
关键字:

一张表的数据导入另一张表