其實(shí)很簡(jiǎn)單,只是為了忘記,做個(gè)記錄,用的時(shí)候方便。
從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、國(guó)際域名空間、雅安服務(wù)器托管、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。
不管是在網(wǎng)站開發(fā)還是在應(yīng)用程序開發(fā)中,我們經(jīng)常會(huì)碰到需要將MySQL或MS SQLServer某個(gè)表的數(shù)據(jù)批量導(dǎo)入到另一個(gè)表的情況,甚至有時(shí)還需要指定導(dǎo)入字段。
本文就將以MySQL數(shù)據(jù)庫(kù)為例,介紹如何通過SQL命令行將某個(gè)表的所有數(shù)據(jù)或指定字段的數(shù)據(jù),導(dǎo)入到目標(biāo)表?中。此方法對(duì)于SQLServer數(shù)據(jù)庫(kù),也就是T-SQL來說,同樣適用?。
類別一、?如果兩張張表(導(dǎo)出表和目標(biāo)表)的字段一致,并且希望插入全部數(shù)據(jù),可以用這種方法:
INSERT?INTO ?目標(biāo)表 ?SELECT??*?FROM ?來源表 ;
例如,要將?articles?表插入到?newArticles?表中,則可以通過如下SQL語句實(shí)現(xiàn):
INSERT?INTO ?newArticles ?SELECT??*?FROM ?articles ;
類別二、?如果只希望導(dǎo)入指定字段,可以用這種方法:
INSERT?INTO ?目標(biāo)表?(字段1,?字段2,?...) ?SELECT ??字段1,?字段2,?... ??FROM ?來源表 ;
請(qǐng)注意以上兩表的字段必須一致,否則會(huì)出現(xiàn)數(shù)據(jù)轉(zhuǎn)換錯(cuò)誤。
INSERT?INTO?TPersonnelChange(
UserId,
DepId,
SubDepId,
PostionType,
AuthorityId,
ChangeDateS,
InsertDate,
UpdateDate,
SakuseiSyaId
)SELECT
UserId,
DepId,
SubDepId,
PostionType,
AuthorityId,
DATE_FORMAT(EmployDate,?'%Y%m%d'),
NOW(),
NOW(),
1
FROM
TUserMst
WHERE
`Status`?=?0
AND?QuitFlg?=?0
AND?UserId??2
利用客戶端連接工具執(zhí)行查詢語句,再結(jié)果集全選右鍵導(dǎo)出,選擇導(dǎo)出的文件類型即可,或者直接復(fù)制查詢結(jié)果,粘貼到Excel里面。
做一些數(shù)據(jù)庫(kù)查詢,不僅希望得到要查詢的結(jié)果,還希望方便地計(jì)算一下查詢結(jié)果中有多少條記錄。我通常的做法是:
$q = "select * from $fromTable where $where limit $start,$pageSize";
$r = mysql_query($q);
$q = "select count(*) from $fromTable where $where";
$cnt = mysql_query($q);
當(dāng) 然可以用mysql_num_rows()或者mysql_affected_rows()來在第一次查詢后得到記錄數(shù)目,但是這兩個(gè)函數(shù)返回的都是查詢 后得到的結(jié)果的數(shù)目,是受limit語句的影響的。很多情況下,需要知道這條查詢語句在沒有l(wèi)imit的情況下結(jié)果總數(shù),比如分頁查詢。
mysql 中本身支持一種更好的方法來達(dá)到上面的效果,那就是使用SQL_CALC_FOUND_ROWS和FOUND_ROWS()函數(shù)。