国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mysql不同數(shù)據(jù)庫不同數(shù)據(jù)表導(dǎo)入數(shù)據(jù)

wayneli / 2348人閱讀

摘要:背景現(xiàn)在我有這么一個(gè)需求數(shù)據(jù)庫的表需要導(dǎo)入到數(shù)據(jù)庫的表表字段表字段導(dǎo)入的字段只有,并且需要符合某個(gè)條件下面分幾種情況來寫,主要區(qū)分和情況導(dǎo)入的數(shù)據(jù)在庫的表中完全不存在直接就好,使用效果一樣導(dǎo)入的數(shù)據(jù)部分存在數(shù)據(jù)部分存在為了區(qū)分需要在兩個(gè)表添

背景

現(xiàn)在我有這么一個(gè)需求:

數(shù)據(jù)庫Auser表需要導(dǎo)入到數(shù)據(jù)庫Baccount

user表字段:uid,username,email,password,regdate,salt

account表字段:id,name,email,password,type,salt

導(dǎo)入的字段只有username,email,password,salt,并且regdate需要符合某個(gè)條件

下面分幾種情況來寫sql,主要區(qū)分insert intoreplace into

情況 導(dǎo)入的數(shù)據(jù)在B庫的表中完全不存在

直接insert into就好,使用replace into效果一樣

INSERT INTO `B`.`account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`users`
WHERE regdate>1418313600
導(dǎo)入的數(shù)據(jù)部分存在

數(shù)據(jù)部分存在為了區(qū)分需要在兩個(gè)表添加唯一索引,這個(gè)唯一索引(UNIQUE)必須是導(dǎo)入的字段里面的值

我在兩個(gè)表中分別為usernamename字段添加唯一索引

直接替換

replace into在操作的時(shí)候如果兩表數(shù)據(jù)重復(fù)(必須定義UNIQUE),會先刪掉那一行(注意是一整行),然后再執(zhí)行insert into

造成的后果就是,account表中的type字段如果原來有值,會直接刪掉,并重新插入,即變成默認(rèn)值了

REPLACE INTO `B`.`account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`users`
WHERE regdate>1418313600
忽略重復(fù)

IGNORE關(guān)鍵字,如果遇到重復(fù),不會操作當(dāng)前行

INSERT IGNORE INTO `B`.`account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`users`
WHERE regdate>1418313600
部分更新

比如果只想更新passwordsalt字段,可以用ON DUPLICATE KEY UPDATE

INSERT INTO `B`.`u_account`(NAME,PASSWORD,email,salt)
SELECT username,PASSWORD,email,salt
FROM `A`.`bbs_ucenter_members`
WHERE regdate>1418313600 ON DUPLICATE KEY UPDATE PASSWORD=VALUES(PASSWORD),salt=VALUES(salt)
總結(jié)

replace into比較暴力,網(wǎng)上也有說慎重使用的,最好用insert into代替

疑問

以上的操作是兩個(gè)數(shù)據(jù)庫在同一臺服務(wù)器上的,直接一條sql就可以搞定

假如要導(dǎo)的兩個(gè)庫在不同的兩個(gè)服務(wù)器上要怎么做啊?

目前暫時(shí)的辦法:

A庫中的user表導(dǎo)入到B庫所在的另一臺服務(wù)器上,然后寫一條sql搞定

或者查詢出指定數(shù)據(jù),導(dǎo)出sql,在sql中將insert into替換為insert ignore into(有局限性)

參考文獻(xiàn)

不同數(shù)據(jù)庫之間數(shù)據(jù)互導(dǎo)怎么實(shí)現(xiàn)?
mysql insert操作
MySQL的Replace into 與Insert into on duplicate key update真正的不同之處
INSERT ... ON DUPLICATE KEY UPDATE Syntax
mysql 將時(shí)間戳直接轉(zhuǎn)換成日期時(shí)間

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/17465.html

相關(guān)文章

  • 如何將 JSON, Text, XML, CSV 數(shù)據(jù)文件導(dǎo)入 MySQL

    摘要:舉個(gè)例子,要處理的文件或者文件是以作為分隔符的,每行有這么三個(gè)數(shù)據(jù)域,那么首先我們需要在數(shù)據(jù)庫中創(chuàng)建這個(gè)表創(chuàng)建成功以后就可以導(dǎo)入了。 文/freenik 將外部數(shù)據(jù)導(dǎo)入(import)數(shù)據(jù)庫是在數(shù)據(jù)庫應(yīng)用中一個(gè)很常見的需求。其實(shí)這就是在數(shù)據(jù)的管理和操作中的ETL (Extract, transform, load)的L (Load)部分,也就是說,將特定結(jié)構(gòu)(structure)或者格...

    崔曉明 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<