轉:http://blog.csdn.net/jjp837661103/article/details/13509889
在我們完成一個項目開發之后,通常我們需要把客戶的很多數據導入到數據庫中,面對大量的數據 導入工作,人工導入肯定是不現實,但是這些又是不得不完成的工作,怎么辦呢?我們可以利用數據庫管理工具提供的數據導入的功能即可。我們這里以SQL SERVE2008為例。SQLSERVER2008有一個“數據導入導出功能”,當然我們也可以打開數據庫之后,在數據庫上點擊右鍵,然后選擇“任 務”,選擇“導入數據”,我們就看到彈出淡入數據的對話框:
這里我們主要導入數據的源格式是EXCEL的,在excel文件中,我們通常需要整理成數據 表格的形式,excel中的數據不要出現合並的單元格等,必須是和數據庫表對應的一條條記錄的形式。在上圖中我們先選擇數據源為excel,然后再選擇 excel文件的路徑,在最下面有一個“首行包含列名稱”的復選項,默認是選中的,也就是說在導入數據的時候會把excel的第一行當做數據庫表的列名 稱,根據需要進行選擇。然后選擇下一步:
上圖中我們主要完成選擇目的數據庫,按照需要選擇即可。然后我們直接點擊下一步,指導出現下面的畫面:
這就會打開excel文件的工作薄,我們選擇一個工作簿(sheet),如果我們的 excel中的數據列和數據庫表中的列不是對應,則需要進行調整,上圖中先選中一個“源”,然后再選擇這個源對應的“目標”,此時按鈕“編輯映射”處於可 用狀態,我們點擊這個按鈕,出現下圖:
在上圖中有“刪除目標表中的行”和“向目標表中追加行”的單選選項,他們的意思說的很 明白,不解釋(哈哈).在蝦米那的表格中,我們重點關注的是“源”和“目標”列,源指的是excel中的列,這一列通常是不能選擇的,我們主要選擇的是 “目標”列,在這一列就是完成excel的一列行數據庫表中的某一個字段進行對應。按照我們的需要進行對應之后,點擊確定,下一步等等,直接到最后一步, 中間出現的警告都不用去理會,完成之后,可能出現錯誤提示,這個提示不是很准確的,有時候雖然出錯但是數據仍然導入到數據庫了,因此我們查看一下數據庫是 否導入進去,如果沒有導入進去,我們看看錯誤提示,有可能出現的錯誤時字段不對應,還有外鍵關系等等,相應的修改一下即可。
其實上面導入數據個過程尤其是在最后選擇“源”和“目標”對應的時候,經常會出現字段的類型不一致的問題,從而導致數據導入不進去,我們可以先把數據直接導入數據庫中,生產一個新的數據表,然后在數據庫的控制台,利用insert 語句完成數據的導入。
有時候 用戶的需求發生變化,數據庫表的字段增加了,此時數據量有又大的情況下,我們也不會手動輸入數據的,直接導入數據的可能改變我們數據庫原有的數據,尤其是 數據庫表存在主鍵字段(通常都有的),這個字段還是自增的,同時這個主鍵字段還是其他表的外鍵字段,那么直接導入就會造成外鍵字段的值也要進行對應的修 改,總的來說就是工作量很大,很復雜。我們怎么能夠在不破壞原有的數據情況下,同時又給新增加的字段導入數據呢?
我們先對應的數據庫表導出為excel文件。在控制台輸入“select * from ####”,然后在輸出部分,點擊右鍵選擇將“標題和數據一塊復制”,然后選擇另存為,存儲為“*.csv”格式的,再用excel打開。
打開excel之后,給excel表添加相應的字段,保存之后,重新導入到數據庫中, 但是此時我們導入數據庫時目標數據庫表的選擇不是已經存在的數據庫,我們這里不選擇,按照默認的設置即可。一路“下一步”就完成導入工作,在數據庫中我們 將會發現一個自動生成的表,“sheet1”等類似的名稱。
然后在控制台利用update語句完成數據的導入或更新:
update A set x1=B.x1,x2=B.x2 from A,B where A.id=B.id
在實際的項目中,我們根據需要進行選擇,最重要的工作還是在excel中數據的整理,我們可以利用excel提供的各種快捷方法整理,避免我們手工進行大量重復復雜的工作。
(結束)
2014年10月15日17:19:59
自己之前在做數據庫數據操作任務的時候,由於excel數據項和數據庫內容剛好匹配,直接導入的數據庫,倒沒有進行數據庫的調整,不過直接導入確實可行,有時間自己試一下調整的內容!