iT邦幫忙

0

請問 SQL 還原資料庫或匯入資料的方法 很急 麻煩教導

sql
tig001 2010-07-29 11:23:0013816 瀏覽

我有一個20100729的A資料庫及20100720的A資料庫備份,因我的疏忽把A資料庫的table內的資料刪掉幾筆,如果我現在要還原刪掉的table資料是要以什麼方式救回比較簡單?
1.用還原資料庫方式,因為我備份的是完整備份,要怎樣才能達到只要A資料庫補回我刪掉的部分?
2.將備份還原成另一個B資料庫利用匯入資料的方式作,要怎樣才能達到只要A資料庫補回我刪掉的部分?
我用的是SQL2000,麻煩大大能教我一下感謝

5
boei
iT邦新手 5 級 ‧ 2010-08-01 14:41:38
最佳解答

依照樓上的jhik大和evayang大這樣子沒錯,這個時候你不用考慮效能好不好了。
ID就是你的主鍵,我整理一下好了:
INSERT INTO tkmsold SELECT *
FROM ticket
WHERE ID NOT IN (SELECT ID FROM tkmsold.dbo.ticket)

Albert iT邦高手 1 級 ‧ 2010-08-01 18:31:37 檢舉

boei提到:

INSERT INTO 資料庫A.table1
SELECT * FROM 資料庫B.table1
WHERE NOT EXISTS
(SELECT * FROM 資料庫A.table1
WHERE 資料庫A.table1.ID=資料庫B.table1.ID)

8
Albert
iT邦高手 1 級 ‧ 2010-07-29 14:12:47

tig001提到:
刪掉的table資料是要以什麼方式救回比較簡單?

你是 DROP TABLE
或是 DELETE TABLE ?

DELETE TABLE 就簡單了!!
INSERT NOT EXISTS 就好了
DROP 就 CREATE TABLE 後
INSERT NOT EXISTS 就好了

看更多先前的回應...收起先前的回應...
tig001 iT邦新手 5 級 ‧ 2010-07-29 14:41:27 檢舉

不是刪掉整個table刪掉,是刪掉table內的幾筆資料.

尼克 iT邦高手 1 級 ‧ 2010-07-29 15:16:16 檢舉

簡單並的方法,把他mount在另外一個資料庫還後,自由取用你想要得資料

jhik iT邦新手 5 級 ‧ 2010-07-29 17:10:01 檢舉

假設有主鍵的話方法如下,找出被刪了的那幾筆,insert回去

INSERT INTO tableA --tableA是被刪了幾筆的
select *
from tableB a --tableB的資料是含有被你刪了幾筆的資料
where a.keycol not in --keycol是主鍵
(select keycol from tableA) b

Albert iT邦高手 1 級 ‧ 2010-07-29 17:23:27 檢舉

jhik提到:
INSERT INTO tableA --tableA是被刪了幾筆的
select *
from tableB a --tableB的資料是含有被你刪了幾筆的資料
where a.keycol not in --keycol是主鍵
(select keycol from ...(恕刪)

除非 not in 是一點點資料
不建議使用 請用 not exists
謝謝

8
jhik
iT邦新手 5 級 ‧ 2010-07-29 17:21:19

重貼成回答問題:
假設有主鍵的話方法如下,找出被刪了的那幾筆,insert回去

INSERT INTO tableA --tableA是被刪了幾筆的
select *
from tableB a --tableB的資料是含有被你刪了幾筆的資料
where a.keycol not in --keycol是主鍵
(select keycol from tableA) b

tig001 iT邦新手 5 級 ‧ 2010-07-30 10:42:13 檢舉

新的資料庫是tkms,table 是ticket,用tkms之前的備份還原成tkmsold資料庫,table也是
ticket,我現在要把tkmsold的table(ticket)跟tkms的table(ticket)做比較,然後把tkmsold的table(ticket)上tkms的table(ticket)沒的資料補回.
這2個不同的資料庫要怎下語法去比較跟補回資料?

6
evayang
iT邦新手 5 級 ‧ 2010-07-30 23:09:18

如果2個database都掛載在同一個server上的話,將樓上jhik的回答內容,再加上資料庫owner應該就行了吧~ 但如果database是掛載在不同的server就得在table前再加上ip及owner

我要發表回答

立即登入回答