最新更新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變得很靈活和高效,能適應不同檔次的機器 作業系統。這裡只...