Oracle 將乙個庫的資料匯入到另乙個庫

2021-08-25 19:06:18 字數 3978 閱讀 2745

最新更新2011-9-28號。

最近的專案中遇到了乙個棘手的問題,由於許多業務都是放在定時中執行,有乙個需求是統計商戶或者門店建立的活動效果,在近期的3.5版本做了很大調整,因此在新的統計方式需要相容歷史活動,所以得把所有的活動遍歷統計一次。考慮到

上線當天晚上定時會跑得很慢,所以上級決定目前只將2023年5月1號之後建立的活動和5月1號前建立並且上線時仍有更新的活動。5月1號之前的活動等上線後,在乙個新庫中將資料跑出來,然後匯入到線上庫。如果線上庫已經存在的資料,就不能匯入。因為以線上環境的資料為準。今天將2023年1月1號到5月1號之間的活動資料在新庫上跑出來了,線上已經存在的資料,是5月1號前建立並且在8月18號上線新版本後仍有更新的活動,這一部分資料不能覆蓋,以線上的為準。

先建立鏈結,連線到線上的資料庫伺服器,具體操作如圖所示,別名ntow,然後輸入使用者名稱,密碼

在完成這個任務時,做了資料驗證。

將乙個資料庫上的analysis_invest_profit_store表中的資料匯入

--到線上資料庫的analysis_invest_profit_store表中。要求:線上已經存在

--的資料不可覆蓋。 表analysis_invest_profit_store主鍵

--是marketingid,coupontypeid和storeid組合的主鍵

-- analysis_invest_profit_store@ntow t 表示線上庫

--1)第一步,找出線上與本地資料庫相同的資料 執行結果為49條

select s.*

from analysis_invest_profit_store s,

analysis_invest_profit_store@ntow t

where s.marketingid = t.marketingid

and s.coupontypeid = t.coupontypeid

and s.storeid = t.storeid;

--2)找出線上庫不存在的資料

-- 此語句執行結果是451條

--本地新庫中analysis_invest_profit_store表中一共有500條,驗證資料不缺少

select s.*

from analysis_invest_profit_store s

where not exists (select *

from analysis_invest_profit_store@ntow t

where s.marketingid = t.marketingid

and s.coupontypeid = t.coupontypeid

and s.storeid = t.storeid);

驗證資料條數是正確的,沒有多餘也沒有缺少,所以就做下一步動作,將線上庫不存在的資料匯入到線上的資料庫。

--3)將線上庫不存在的資料匯入到線上表  

insert into analysis_invest_profit_store@ntow t

select s.*

from analysis_invest_profit_store s

where not exists (select *

from analysis_invest_profit_store@ntow t

where s.marketingid = t.marketingid

and s.coupontypeid = t.coupontypeid

and s.storeid = t.storeid);

整理一下oracle在專案中常用的基本語句,算是乙個小小的總結概要。

1、獲得當前時間

select sysdate from dual

2、獲得char型別的時間

select to_char(sysdate,'yyyy-mm-dd') as mydate from dual

3、獲得精確到秒的時間

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as mydate from dual

4、oracle中用sql語句更改字段型別。

alter table trans_buycoupon_record  rename column buy_num to buy_num1;

alter table trans_buycoupon_record add buy_num number;

update trans_buycoupon_record set buy_num=cast(buy_num1 as number);

alter table trans_buycoupon_record drop column buy_num1;

(4月21日補充)

5、a表與b表有關聯,a和b都是col這個字段,但是a表中維護有記錄b表中則沒有,現在要將b表中的col欄位的值更新為與a表中的col值一樣update prepay_send_record ps set end_date =(select m.end_date from member_prepay_account m where m.merchant_id=ps.merchant_id and ps.customer_id=m.customer_id )  這裡要注意的是要找到將要修改的表與資料**的表的關係。

4月12號,先總結到這裡,以後持續更新中。

8月15號更新:

向oracle表中加新索引:

create   index   ind_carbnow_frameid   on     sms_send_record(marketing_id,biz_type);

語法是:

create index 索引名  on  表名(欄位名1,欄位名2);

同乙個使用者複製的話可以用

sql**

create

table新錶as

select*from舊表     資料一起複製   

sql**

create

table新錶as

select*from舊表where1=2     空表  

不同使用者複製的話可以用

sql**

create

tableb.新錶as

select*froma.舊表    

copyfroma/atob/bcreate

tableaaa   usingselect*fromaaa;  

6、將一張表的資料,插入到另一張表(oracle中將數字型別以字串形式拼接)

insert into yd_person(person_id,person_name,mobile,store_id)

select concat('25010100006',t.mobile), t.name ,t.mobile ,'250101000060001' from yd_person_1209 t

將excel資料匯入oracle資料庫,作對比

工作中遇到的乙個需求,將excel資料匯入oracle資料庫,與資料庫對應表作對比,按要求輸出可執行sql語句,實施如下 coding utf 8 encoding gbk import os import sys import cx oracle import pandas as pd impor...

將乙個sql檔案在遠端的資料庫執行 匯入其資料

1.首先,根據以下sql 進入遠端資料庫 mysql hip uusername p enterpassword password 2.成功連入資料庫後,執行sql檔案,為了方便,我把sql檔案放到f盤的根目錄下面,執行下面的語句在遠端的資料庫中匯入sql檔案的資料 use fstest 使用fst...

建立乙個Oracle 資料庫

由於oracle是大型的關係型資料庫系統 rdbms 所以在建立資料庫時需要設定許多環境引數,有時候這些設定環境的準備工作會讓人覺得很繁瑣,問題出得也很多,但也正是oracle公司給出了讓使用者能靈活的設定資料庫環境引數的做法,使得oracle變得很靈活和高效,能適應不同檔次的機器 作業系統。這裡只...