2012-08-30 38 views
3

我從我通過PhpMyAdmin在本地存儲在MySQL數據庫中的數據庫中導出了幾個條目,並且我只想替換在線託管的目標數據庫上的條目。不幸的是,當我嘗試這樣做PHPMyAdmin說,這些帖子已經存在,因此他不能抹去它們。通過PHPMyAdmin導入一些數據庫條目並覆蓋

這將需要我很多時間在其他帖子中手動搜索這些條目,並一次刪除一條,所以我想知道是否有任何解決方法以便在導入時覆蓋這些條目。

在此先感謝!

+1

編輯你的問題,並在sqlfiddle上分享你的出口和出口entires(只有幾個原始/真正的條目),並在此處給出鏈接。然後在幾分鐘內得到你的結果:) – Sami

+1

似乎你有一個主鍵,限制相同的條目重複。如果是這種情況,如果您有興趣,您可以通過存儲過程獲得解決方案。怎麼樣?從一個表中選擇記錄並通過循環逐一插入行,使用1062的繼續處理程序進行復制 – Sami

回答

1

這是一個快速和骯髒的方式來做到這一點。其他人可能有更好的解決方案:

這聽起來像你試圖運行INSERT查詢,並且phpMyAdmin告訴你他們已經存在。如果您使用UPDATE查詢,則可以更新信息。

我會將您擁有的查詢複製到文本編輯器中,最好是能夠處理查找和替換的文件編輯器,如Notepad ++或Gedit,然後替換一些代碼以將查詢從INSERT更改爲UPDATE。

請參見:http://dev.mysql.com/doc/refman/5.0/en/update.html

或者,你可以直接刪除它們,然後運行INSERT查詢。

您可能可以使用查找和替換的一些邏輯來創建一個DELETE查詢,以便首先擺脫它們。

http://dev.mysql.com/doc/refman/5.0/en/delete.html

+0

謝謝,我丟失了導出的文章的參考,因爲我大量刪除了所有行中的一列,所以我回到了以前的備份,刪除了我需要保留的列數據的條目,然後我從其餘的數據中刪除了數據,之後我將第一個數據導回到原來的位置。 – MACC

+1

一個可以工作的好解決方案,思路很好 – pal4life

2

退房insert on duplicate。您可以將語法添加到本地存儲的條目中,也可以導入到臨時數據庫中,然後運行INSERT ... SELECT ... ON DUPLICATE KEY UPDATE。如果您可以發佈架構,它會幫助我們更好地指導您。