一、導出導入SQL?Server里某個數據庫
1.在SQL?Server企業管理器里選中要轉移的數據庫,按鼠標右鍵,選所有任務->備份數據庫。 2.備份?選數據庫-完全, ??目的?備份到?按添加按鈕? ? ? ? ??文件名? ? ? ? 在SQL?Server服務器硬盤下輸入一個自定義的備份數據庫文件名(后綴一般是bak) ??重寫?選重寫現有媒體 ??最后按確定按鈕。 ??如果生成的備份數據庫文件大于1M,要用壓縮工具壓縮后再到Internet上傳輸。 ?? 3.通過FTP或者remote?desktop或者pcanywhere等方法 ??把第二步生成的備份數據庫文件或者其壓縮后的文件傳到目的SQL?Server數據庫,如果有壓縮要解壓。 ?? 4.目的SQL?Server數據庫如果還沒有此數據庫,先創建一個新的數據庫; ??然后選中這個新創建的數據庫,按鼠標右鍵,選所有任務->還原數據庫 ??還原->從設備->選擇設備->磁盤->添加(找到要導入的備份數據庫文件名)->確定 ??還原備份集->數據庫-完全 ??最后按確定按鈕。完全的數據庫導入成功了。 ??(如果在已經存在的SQL?Server數據庫上還原數據庫可能遇到有還有其它人正在使用它而恢復操做失敗, ???可以去看?->管理->當前活動->鎖/對象->找到數據庫下鎖的進程號->到查詢分析器里用kill?進程號殺掉這些鎖, ???然后再做還原) 注意:如果在原有的目的SQL?Server數據庫上從備份文件(*.bak)還原數據庫 ??????會把已經存在的表、存儲過程等數據庫對象全部替換成最近這次導入的備份數據庫里的內容。 ?????? ??????如果一定要還原備份文件(*.bak)里部分數據,需要另外建一個新數據庫, ??????其邏輯名稱和數量同備份文件(*.bak)里數據庫的邏輯名稱和數量一致; ??????新數據庫的物理文件名稱取得一定要和備份文件(*.bak)里數據庫的物理文件不一樣才行。 二、導出導入SQL?Server里某個表 1.沒有防火墻,同一個局域網里或不在同一個局域網里,但通過Internet可以互相訪問 ??在SQL?Server企業管理器里選中目的數據庫?,按鼠標右鍵,選所有任務->導入數據-> ??彈出數據轉換服務導入/導出向導窗口->下一步-> ?? ??選數據源->?數據源(用于SQL?Server的Microfost?OLE?DB提供程序)-> ????服務器(可選擇局域網內能訪問到的所有SQL?Server服務器,或者直接輸入IP地址)-> ????選擇使用windows身份驗證還是使用SQL?Serve身份驗證(輸入數據庫的用戶名和密碼)-> ????數據庫(可選擇上面選中SQL?Server服務器上所有權限范圍內的數據庫)->下一步-> ?? ??選擇目的->目的(用于SQL?Server的Microfost?OLE?DB提供程序)-> ????服務器(默認為上一步里選中的導出服務器,也可以選其它局域網內能訪問到的所有SQL?Server服務器,或者直接輸入IP地址)->? ????目的數據庫(可選擇上面選中SQL?Server服務器上所有權限范圍內的數據庫)->下一步-> ?? ??制定表復制或查詢->選從源數據庫復制表和視圖(也可以選擇用一條查詢指定要傳輸的數據)->下一步-> ????選擇源表和視圖->在要導入的表和視圖前面選中源->目的出現同樣的表名(可以手工修改成別的表名)-> ????轉換->列映射和轉換里面可以修改源表和目的表之間字段的對應關系,修改目的表字段的類型和長度等, ????并可以選擇創建目的表,在目的表中增加行,除去并重新創建目的表,啟用標志插入等選項->確定->下一步-> ?? ??保存、調度和復制包->時間->立即運行(如果要實現隔一段時間自動導出導入數據,選調度DTS包以便以后執行)-> ????保存(可以不選)->[?保存DTS包(如果以后還要轉移這批相同的數據,可以把本次導出導入的內容和步驟保存起來, ????存到SQL?Server即可,保存的時候要輸入DTS的包名及詳細描述)->下一步->?]->完成 ?? ??正在執行包->圖形界面顯示創建表及插入記錄的步驟和狀態->完成 2.經過防火墻,不在同一個局域網里 ①、導出表里的數據到文本文件: ????在SQL?Server企業管理器里選中目的數據庫,按鼠標右鍵,選所有任務-> ????導入數據->彈出數據轉換服務導入/導出向導窗口->下一步-> ????選數據源->?數據源(用于SQL?Server的Microfost?OLE?DB提供程序)-> ??????服務器(可選擇局域網內能訪問到的所有SQL?Server服務器)-> ??????選擇使用windows身份驗證還是使用SQL?Serve身份驗證(輸入數據庫的用戶名和密碼)-> ??????數據庫(可選擇上面選中SQL?Server服務器上所有權限范圍內的數據庫)->下一步-> ????選擇目的->目的(文本文件)->?文件名(在自己的電腦硬盤中生成一個自定義的文本文件)?->下一步-> ????制定表復制或查詢->選從源數據庫復制表和視圖(也可以選擇用一條查詢指定要傳輸的數據)->下一步-> ????選擇目的文件格式->源(選擇要導出的表)->用默認的帶分隔符->選第一行包含有列名稱選項->下一步-> ????保存、調度和復制包->時間->立即運行(如果要實現隔一段時間自動導出到文本文件,選調度DTS包以便以后執行)-> ??????保存(可以不選)->?[保存DTS包(保存的時候要輸入DTS的包名及詳細描述)->下一步->]->完成 ?? ????正在執行包->圖形界面顯示表到文本文件的步驟和狀態->完成 ????如果生成的文本文件大于1M,要用壓縮工具壓縮后再到Internet上傳輸。 ②、通過FTP或者remote?desktop或者pcanywhere等方法把 ????第①步生成的文本文件或者其壓縮后的文件傳到目的SQL?Server數據庫,如果有壓縮要解壓。 ③、把文本文件導入目的SQL?Server數據庫 ????直接把文本文件導入目的SQL?Server數據庫里跟文本文件同名的新表名時,默認的會把所有字段類型都變成字符串。 ????所以我們要這樣做: ????在源SQL?Server數據庫上先生成創建表的sql語句 ????在SQL?Server查詢分析器里->選中源數據庫里表名->按右鍵->在新窗口中編寫對象腳本->創建-> ??????復制下新窗口內創建表名的sql語句 ????到目標SQL?Server數據庫上查詢分析器里執行創建表名的sql語句,生成空表結構。 ????(如果已經存在這樣的表名,修改建表的sql語句,在表名后面加上導入時間的年月信息,例如table_0113) ????調用導入/導出工具->彈出數據轉換服務導入/導出向導窗口->下一步-> ????選數據源->?數據源(文本文件)-> ??????文件名(已傳到目的SQL?Server數據庫下要導入的文本文件,后綴可以不是*.txt, ??????但是常規文本編輯器能打開的文件,文件類型選全部)->下一步-> ????選擇文件格式->用默認的帶分隔符->選第一行包含有列名稱選項->下一步-> ??????制定列分割符->逗號->下一步-> ????選擇目的->目的(用于SQL?Server的Microfost?OLE?DB提供程序)-> ??????服務器(可選擇目標局域網內能訪問到的所有SQL?Server服務器)-> ??????選擇使用windows身份驗證還是使用SQL?Serve身份驗證(輸入數據庫的用戶名和密碼)-> ??????數據庫(可選擇上面選中SQL?Server服務器上所有權限范圍內的數據庫)->下一步-> ?? ????選擇源表和視圖->修改目的表名為剛才創建的表名->轉換(在目的表中追加行)?->下一步-> ????保存、調度和復制包-> ??????時間->立即運行(如果要實現隔一段時間自動把文本文件導入,選調度DTS包以便以后執行)-> ??????保存(可以不選)->?[保存DTS包(保存的時候要輸入DTS的包名及詳細描述)->下一步->]->完成 ?? ????正在執行包->圖形界面顯示文本文件到表的步驟和狀態->完成 ????如果要更改導入時間的年月信息的表名,例如table_0113到原來的表名, ????在企業管理器里把原來的表名改成table_old_0113,table_0113改名成table。 ????這會對應用程序里頻繁訪問的表照成一定的中斷。 注意:源表上的建的索引和主鍵約束不能用上面介紹的1和2方法轉移過來,還需要手工來建索引和主鍵。 ??????標志種子和not?null的約束可以繼承過來。 ??????導入視圖時會把源視圖里所有的真實數據導入成一個新表,而不是視圖。 三、SQL?Server存儲過程或用戶定義的函數導出導入 1、導出存儲過程或用戶定義的函數成*.sql文件 ????在SQL?Server企業管理器里選中源數據庫, ????存儲過程->單選或者多選中要轉移的存儲過程-> ????用戶定義的函數->單選或者多選中要轉移的函數-> ????按鼠標右鍵,選所有任務->生成SQL腳本->確定->在自己的電腦硬盤中生成一個自定義的*.sql文件-> ??????保存->正在生成SQL腳本->成功 2、如果目的數據庫經過防火墻,不在同一個局域網里, ???要通過FTP或者remote?desktop或者pcanywhere等方法把第1步生成的*.sql文件傳到目的SQL?Server數據庫服務器上。 3、用查詢分析器進入SQL?Server目的數據庫, ????從菜單里選文件->打開->打開查詢文件->選中第1步生成的*.sql文件->點執行查詢的綠色倒三角型快捷鍵-> ????查詢窗口里會出現執行后的消息(有時候可能因為存儲過程和用戶定義的函數之間有一定的依賴關系,會報一些錯。 ????最好先執行用戶定義的函數的*.sql文件,再執行存儲過程的*.sql文件) 四、ORACLE數據庫里表導入SQL?Server數據庫 1、在目的SQL?Server數據庫服務器上安裝ORACLE?Client軟件或者ORACLE?ODBC?Driver. ???在$ORACLE_HOME\network\admin\tnsnames.ora里配置ORACLE數據庫的別名(service?name)。 ???具體配置方法可以參考本站文章:客戶端連服務器的注意事項 2、在WIN2000或者win2003服務器->管理工具->數據源(ODBC)-> ???系統DSN(本機器上NT域用戶都可以用)->添加->ORACLE?ODBC?Driver->完成-> ???data?source?name?可以自定義,我一般填ORACLE數據庫的sid標志, ?????description里可以填ORACLE數據庫詳細描述,也可以不填-> ???data?source?service?name?填第1步定義的ORACLE數據庫別名->OK。 ???(用戶DSN和文件DSN也可以類似配置,但使用的時候有一些限制) 3、SQL?Server的導入和導出數據工具里->選數據源->?數據源(其它(ODBC數據源))-> ???選第2步在ODBC里定義的系統DSN?source?name,用戶名密碼處填寫ORACLE系統的用戶名和密碼-> ???下一步->選擇目的,選SQL?Server數據庫(跟上面第二點講的一致,就不重復了)。 ????注意:在ORACLE表和SQL?Server表之間'轉換'那步很重要, ??????????可以改變默認的字段數據類型,如image->text,decimal->int 五、SQL?Server數據庫里表導入ORACLE數據庫 ???方法一.導出目的選通過ODBC數據源里定義的ORACLE數據庫,?注意ORACLE里表名都是大寫的. ???? ? ? ? ??我一般在ORACLE這邊先生成好表結構,再選擇SQL?SERVER源表往ORACLE目的表里追加數據. ???? ? ? ? ??數據傳輸速度比方法二慢. ??? ???方法二.從SQL?Server數據庫導入數據到ORACLE數據庫可以選擇用Windows下ORACLE9i企業或者個人版數據庫做中轉。 ???? ???具體配置方法可以參考這兩篇文章: ??? ???Oracle?異構服務實踐 ??? ???在ORACLE里設置訪問多個SQL?Server數據庫 ????注意:ORACLE通過訪問SQL?Server的數據庫鏈接時,用select?*?的時候字段名是用雙引號引起來的。 |