Mysql Oracle的資料遷移

2021-07-28 14:05:29 字數 3213 閱讀 2680

當我們遇到資料量較大的資料遷移時,並且還是跨資料庫操作,則建議用資料庫的自帶工具比較好!

本例子介紹由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密碼 資料庫名 路...