oracle 每天備份指定表的資料到另外一張備份表中
因為有一張中轉資料的表,資料量特別大不能儲存太久,但是最近幾天的有可能要使用。所以只保留7天的資料量,其他的資料按月重新建表分開儲存,用以備份。
首先建立備份的儲存過程
CREATE OR REPLACE PROCEDURE P_DAYCLEAR IS V_TABLE_COUNT int; V_TABLE_NAME VARCHAR2(100); V_YEAR_MONTH VARCHAR2(100); v_sql VARCHAR2(300); c_sql VARCHAR2(300); BEGIN select to_char(sysdate - interval '7' day, 'yyyyMM') into V_YEAR_MONTH from dual; V_TABLE_NAME := 'DSM_COM_INDEX_HIS_VALUE' || V_YEAR_MONTH; select count(*) into V_TABLE_COUNT from user_tables where table_name = V_TABLE_NAME; --判斷表是否已經存在了 IF V_TABLE_COUNT = 0 THEN --建表 c_sql :='create table '||V_TABLE_NAME||' as select * from DSM_COM_INDEX_HIS_VALUE where 1=2 '; execute immediate c_sql ; commit; END IF; select to_char(sysdate - interval '6' day, 'yyyy-MM-dd') into V_YEAR_MONTH from dual; V_SQL := 'insert into '||V_TABLE_NAME||' select * from DSM_COM_INDEX_HIS_VALUE where update_time < to_date(:1, ''yyyy-MM-dd'')'; --插資料 execute immediate V_SQL USING V_YEAR_MONTH ; COMMIT; --刪除資料 V_SQL := ' delete from DSM_COM_INDEX_HIS_VALUE where update_time < to_date(:1, ''yyyy-MM-dd'') '; execute immediate V_SQL USING V_YEAR_MONTH ; COMMIT; END P_DAYCLEAR;
然後建立定時任務 晚上執行
declare job_id pls_integer; begin sys.dbms_job.submit(job => job_id, what => 'P_DAYCLEAR();', next_date => to_date('10-03-2018 03:00:00', 'dd-mm-yyyy hh24:mi:ss'), interval => 'TRUNC(sysdate+86400)'); commit; end;
相關推薦
oracle 每天備份指定表的資料到另外一張備份表中
因為有一張中轉資料的表,資料量特別大不能儲存太久,但是最近幾天的有可能要使用。所以只保留7天的資料量,其他的資料按月重新建表分開儲存,用以備份。 首先建立備份的儲存過程 CREATE OR REPLACE PROCEDURE P_DAYCLEAR IS V_TABLE
根據一張表更新另外一張表
#需要更新的表 select distinct owner,table_name from dba_tab_columns t where (t.COLUMN_NAME like '%ACCT_ID%' ) and owner in('COMM'); #根據
MS SQL中複製一張表到另外一個數據庫中一張表
--複製結構+資料 select * into 資料庫名.dbo.新表名 from 資料庫名.dbo.原表名 select * into Stockholder.dbo.SHInfo from dspring.dbo.HIREMEN --只複製結構
oracle中,把一個表中指定的欄位資料更新到另外一張表裡面
一、建立表結構 create table test1( id varchar2(10) , val varchar2(20), name varchar2(20)); create table test2( id varchar2(10), val varchar2(20) ,
從表中插入資料到另外一張表
方法一: 程式碼 1 select into 和 insert into select 兩種表複製語句 2 select * into destTbl from srcTbl 3 4 insert into destTbl(fld1, fld2) sele
Linq實現sql一張表資料不存在另外一張表
Linq中包含查詢 //Linq程式碼: T_WxMaterials.Where(n=>T_VideoMsgs.Select(m=>m.MediaID).Contains(n.MediaID)) //生成的sql語句: SELECT [t0].[ID], [t0].[
java 連帶操作(兩張表關聯,一張表插入一條新資料,另外一張表也跟著插入一條新資料)
以角色許可權模組中增加功能為例子:a) 概念: 連帶操作:首先先在Role表中插入一條資料,接著拿到rid,往Role-Acl表中插入一條資料b)資料庫設計:Role表:Role-Acl表:c) 程式碼實現:RoleMap:/** * * @Description: 新增
Mysql 把查詢的資料插入另外一張表
直接上sql語句: INSERT INTO tableA (name,addDate) SELECT name,addDate from tableB 今天遇到個問題,就是把一個表的資料匯入到另外一張
Oracle 將另外一張表的列更新到本表的列
_id bsp select oracl sele zid lec sql set Oracle寫法: update temp_agentpay_df q set q.up_batch_bizid=(select c.batch_bizid from temp_df_id
MySql 從一張表查詢的資料賦值給另外一張表的欄位(MySQL Update Query using a left join)
舉慄: 我們的使用者積分出現重複資料,然後我們要把重複資料刪除掉,重新計算使用者總積分,假設所有積分都是增加的積分。 使用者積分表test_user_points 使用者iduser_id 使用者積分總
DB2大資料重一張表複製到另外一張表儲存過程和直接在客戶端中執行
IN PI_PCKBED VARCHAR(32672),IN PI_PCKEND VARCHAR(32672)) BEGIN DECLARE SQL1 VARCHAR(200); DECLARE SQL2 VARCHAR(200); DECLARE SQL3 VARCHAR(200); D
oracle儲存過程將某張表一個欄位的多值分開成多條資料插入到一張新表
create or replace PROCEDURE PRO_MANDATESCOPE (dataid in varchar2,tablename in varchar2 ) AS
oracle一張表向另一張表插入不重複資料merge into用法
參考1: 由於專案中需要用到批量插入,為了防止使用者插入重複的資料,需要先判斷插入的資料是不是已經存在,如果存在則忽略這次插入,否則插入這條資料,剛開始的時候是先用一條SQL語句判斷,如果返回結果是真(記錄已經存在),則忽略,否則插入這條資料,這樣的話插入一條資料
轉換一個字段中含有多個另外一張表的id | | 行轉列
ret .net sub 模式 end posit tex 匹配 replace 1、Oracle Function --入參:表 id /* cxcyxm02 :操作表,含有一個存儲另一張表(xs0101)多個主鍵id的字段 ids :操作表的主鍵 i
查詢在一張表不在另外一張表的記錄及效率探究
tro 圖片 刪除 rom 表連接 ren open 方式 mod 在我做項目的時候遇到一個需求,要將存在於表ta而不存在於表tb中的數據查詢出來。 記錄使用的方法和探討效率。 數據準備 創建表ta,並且使用存儲過程插入13000條數據,在我的機器上運行時間: 346.7
完整備份數據庫+差異備份,恢復到另外一臺服務器
數據庫文件 完整 刷新 需要 點擊 一個 服務 選中 第一個 材料:完整備份數據庫一份、最近備份的差異備份一份 現在需要將它完整的恢復到另外一臺數據庫服務器上。 首先 左側數據庫-右鍵-還原數據庫 然後目標數據庫手動輸入一個名字。 下面源設備選擇完整數據庫文件,然後確定後會
MySQL將一個表的某個欄位值更新到另外一張表
今天,遇到一個需求是要將MySQL的一個表中的欄位更新到另一個表中,開始,我嘗試用以下的SQL解決: UPDATE t_order_temp SET price=t_order.amount FROM t_order WHERE t_order_temp
mysql 把一張表的某列,更新到另外一張表
mysql 把一張表的某列,更新到另外一張表 由於第二張表的列出來的是集合,但是我們只需要集合的第一條記錄 1、先把需要的列和對應關係導到另外臨時表中 create table tmp1 as select a.SCWXDID,a.wxff from wz_scwxd_sub a;
sql insert into 一次性插入多條資料 從一張表中查詢到的資料插入到另一張表
--插入多條資料使用DEFAULT關鍵字(第二種方法,不要將預設列名寫出,在UNION後面加上all,最後一行不加) ------------------------------------------------------------------------------
oracle表資料誤刪恢復,表誤刪恢復
一 表資料誤刪恢復: 1.ALTER TABLE CCUSAGENTRELA ENABLE row movement ; 2.flashback table CCUSAGENTRELA to timestamp to_timestamp(‘2018-11-01 10:34:00’,‘yyyy