當我們遇到資料量較大的資料遷移時,並且還是跨資料庫操作,則建議用資料庫的自帶工具比較好!
本例子介紹由mysql-----》oracle的用資料庫的自帶工具資料遷移!
第一步:將資料從mysql中提取出來到檔案,用到shell指令碼,sql指令碼如下:
主要用到 select ....from ...into outfile ...
mysqlexport.sh
#/bin/sh
echo "從資料庫中匯出資料開始執行,請等待......"
mkdir /var/lib/mysql/tmpdir
if [[ $? -eq 0 ]];then
chown mysql:mysql /var/lib/mysql/tmpdir
if [[ $? -eq 0 ]];then
mysql -uposp -poaa7o9fhz4rp jwposp < /var/lib/mysql/mysqlexport.sql
if [[ $? -eq 0 ]];then
echo "資料匯出成功^-^,資料檔案在var/lib/mysql/tmpdir目錄下!!"
else
echo "資料匯出失敗!"
exit 1;
fielse
echo "將/var/lib/mysql/tmpdir目錄賦給mysql使用者失敗!"
exit 1;
fielse
echo "建立目錄/var/lib/mysql/tmpdir失敗!"
exit 1;
fi
mysqlexport.sql
/*批處理記錄表*/
select
ifnull(job,''),
ifnull(job_name,''),
ifnull(work_date,''),
ifnull(addi_data1,''),
ifnull(addi_data2,''),
ifnull(addi_data3,''),
ifnull(addi_data4,''),
ifnull(addi_data5,''),
ifnull(status,''),
ifnull(exec_date,''),
ifnull(exec_time,'')
from t_batch_rec into outfile '/var/lib/mysql/tmpdir/batchrec.txt'
character set gbk
fields
terminated by '\,'
lines
terminated by '\n';
/*批處理詳情表*/
select
ifnull(down_date,''),
ifnull(merid,''),
ifnull(status,''),
ifnull(down_type,'')
from t_batch_rec_detail into outfile '/var/lib/mysql/tmpdir/batchrecdetail.txt'
character set gbk
fields
terminated by '\,' //字段之間,分隔
lines
terminated by '\n'; //換行linux下
此時資料檔案
batchrec.txt,
batchrecdetail.txt 就生成了
第二步:將資料檔案匯入oracle資料庫,用到shell指令碼,ctl檔案如下:
主要用到sqlldr命令
oracleimport.sh
#批處理記錄表
sqlldr userid=jw/jw123@orcl control=/home/movedata/batchrec.ctl bad=/home/movedata/batchrec.bad log=/home/movedata/batchrec.log errors=0
if [[ $? -eq 0 ]];then
echo "批處理記錄表匯入成功!"
else
echo "批處理記錄表匯入失敗!"
exit 1;
fi#批處理詳情表
sqlldr userid=jw/jw123@orcl control=/home/movedata/batchrecdetail.ctl bad=/home/movedata/batchrecdetail.bad log=/home/movedata/batchrecdetail.log errors=0
if [[ $? -eq 0 ]];then
echo "批處理詳情表匯入成功!"
else
echo "批處理詳情表匯入失敗!"
exit 1;
fi
batchrec.ctl
load data
infile '/home/movedata/tmpdir/batchrec.txt'
fields terminated by ','
trailing nullcols
(job,
job_name,
work_date,
addi_data1,
addi_data2,
addi_data3,
addi_data4,
addi_data5,
status,
exec_date,
exec_time
)
batchrecdetail.ctl
load data
infile '/home/movedata/tmpdir/batchrecdetail.txt'
fields terminated by ','
trailing nullcols
(down_date,
merid,
status char,
down_type char
)
此時資料就匯入完成了!
接下來在兩個資料庫中執行相同的sql指令碼以驗證資料匯入的正確性,這一步很重要!!!
mysql,oracle查詢當天的資料
mysql datediff 函式返回兩個日期之間的時間。比如查詢今天打卡的人員資訊,只需要條件是打卡時間和當前時間差值為零就可以了 select t.from t dkxq t where datediff t.dksj,now 0 oracle 例 查詢下發時間是當前天的資料 select fr...
怎麼遷mysql資料庫 MySQL資料庫遷移
mysql資料庫遷移 資料檔案直接遷移 在遷移之前有三種方案 1.資料庫直接匯出,拷貝檔案到新伺服器,在新伺服器上匯入。2.使用 mysql gui tools 中的 mysqlmigrationtool。3.資料檔案和庫表結構檔案直接拷貝到新伺服器,掛載到同樣配置的mysql服務下。我在我的電腦上...
資料庫 mysql oracle 回顧
關係型資料庫三正規化 1 列必須保持原子性,不可分割 2 每行有唯一標識區分 非主屬性 完全依賴 主鍵 3 每一列都 直接依賴 主鍵,而不是 傳遞依賴 主鍵 oracle10g的客戶端和伺服器安裝要在xp相容模式下進行 mysql命令列匯入.sql檔案 mysql u使用者名稱 p密碼 資料庫名 路...