有個(gè)mysql專(zhuān)用的toolkit不知道你用沒(méi)用過(guò),我覺(jué)得很好用,它做導出和導入備份的方式是生成SQL文件,看里面的內容可以一目了然,對于數據量不大的情況下,速度也不錯。
這個(gè)GUI工具是MYSQL官方網(wǎng)站提供的,地址是 , 它里面包含了3個(gè)組件,MySQL Administrator 1.2,MySQL Query Browser 1.2和MySQL Migration Toolkit 1.1,平時(shí)對表進(jìn)行操作時(shí)用QueryBrowser,做備份的導出導入時(shí)用Administrator。 這個(gè)工具有一個(gè)系統托盤(pán)停留圖標,在那個(gè)圖標上點(diǎn)右鍵分別可以進(jìn)入這兩個(gè)操作界面。
導出數據庫命令: mysqldump -u root -p mydb2 > e:\mydb.sql 把數據庫mydb2導出到e盤(pán)的mydb.sql 注意:在dos下進(jìn)入mysql安裝的bin目錄下,但是不要登陸。
導入數據庫命令: mysqldump -u root -p mydb2 imp userid=test/test full=y file=inner_notify.dmp 17jquery.com 下面介紹的是導入導出的實(shí)例。 數據導出: 1 將數據庫TEST完全導出,用戶(hù)名system 密碼manager 導出到D:daochu.dmp中 exp system/manager@TEST file=d:daochu.dmp full=y exp fang/fang@ORCL file=d:oais20100401.dmp full=y exp oais/oais@ORCL file=d:oais_mj.dmp full=y 2 將數據庫中system用戶(hù)與sys用戶(hù)的表導出 exp system/manager@TEST file=d:daochu.dmp owner=(system,sys) 3 將數據庫中的表inner_notify、notify_staff_relat導出 exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) exp fang/fang@ORCL file=d:oais20100401_essmenu.dmp tables=(essmenu) 4 將數據庫中的表table1中的字段filed1以"00"打頭的數據導出 exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'" 上面是常用的導出,對于壓縮,既用winzip把dmp文件可以很好的壓縮。
也可以在上面命令后面 加上 compress=y 來(lái)實(shí)現。 一起jquery,17jquery 數據的導入 1 將D:daochu.dmp 中的數據導入 TEST數據庫中。
imp system/manager@TEST file=d:daochu.dmp imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y 上面可能有點(diǎn)問(wèn)題,因為有的表已經(jīng)存在,然后它就報錯,對該表就不進(jìn)行導入。 在后面加上 ignore=y 就可以了。
2 將d:daochu.dmp中的表table1 導入 imp system/manager@TEST file=d:daochu.dmp tables=(table1) 基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然后導入。
MSSQL的導入導出有三種方法,不可以在cmd模式下進(jìn)行:1.使用Transact-SQL進(jìn)行數據導入導出 我們很容易看出,Transact-SQL方法就是通過(guò)SQL語(yǔ)句方式將相同或不同類(lèi)型的數據庫中的數據互相導入導出或者匯集在一處的方法。如果是在不同的SQL Server數據庫之間進(jìn)行數據導入導出,那將是非常容易做到的。
一般可使用SELECT INTO FROM和INSERT INTO。使用 SELECT INTO FROM時(shí)INTO后跟的表必須存在,也就是說(shuō)它的功能是在導數據之前先建立一個(gè)空表,然后再將源表中的數據導入到新建的空表中,這就相當于表的復制(并不會(huì )復制表的索引等信息)。
而INSERT INTO的功能是將源數據插入到已經(jīng)存在的表中,可以使用它進(jìn)行數據合并,如果要更新已經(jīng)存在的記錄,可以使用UPDATE。 SELECT * INTO table2 FROM table1 --table1和table2的表結構相同 INSERT INTO table2 SELECT * FROM table3 --table2和table3的表結構相同 當在異構數據庫之間的進(jìn)行數據導入導出時(shí),情況會(huì )變得復雜得多。
首先要解決的是如何打開(kāi)非SQL Server數據庫的問(wèn)題。 在SQL Server中提供了兩個(gè)函數可以根據各種類(lèi)型數據庫的OLE DB Provider打開(kāi)并操作這些數據庫,這兩個(gè)函數是OPENDATASOURCE和OPENROWSET。
它們的功能基本上相同,不同之處主要有兩點(diǎn)。 2. 使用命令行BCP導入導出數據 很多大型的系統不僅僅提供了友好的圖形用戶(hù)接口,同時(shí)也提供了命令行方式對系統進(jìn)行控制。
在SQL Server中除了可以使用SQL語(yǔ)句對數據進(jìn)行操作外,還可以使用一個(gè)命令行工具BCP對數據進(jìn)行同樣的操作。BCP是基于DB-Library 客戶(hù)端庫的工具。
它的功能十分強大,BCP能夠以并行方式將數據從多個(gè)客戶(hù)端大容量復制到單個(gè)表中,從而大大提高了裝載效率。但在執行并行操作時(shí)要注意的是只有使用基于 ODBC 或 SQL OLE DB 的 API 的應用程序才可以執行將數據并行裝載到單個(gè)表中的操作。
BCP可以將SQL Server中的數據導出到任何OLE DB所支持的數據庫的,如下面的語(yǔ)句是將authors表導出到excel文件中。 bcp pubs.dbo.authors out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P"password" BCP不僅能夠通過(guò)命令行執行,同時(shí)也可以通過(guò)SQL執行,這需要一個(gè)系統存儲過(guò)程xp_cmdshell來(lái)實(shí)現,如上面的命令可改寫(xiě)為如下形式。
EXEC master..xp_cmdshell 'bcp pubs.dbo.authors out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P"password"' 3. 使用數據轉換服務(wù)(DTS)導入導出數據 DTS是SQL Server中導入導出數據的核心,它除有具有SQL和命令行工具BCP相應的功能外,還可以靈活地通過(guò)VBScript、JScript等腳本語(yǔ)言對數據進(jìn)行檢驗、凈化和轉換。 SQL Server為DTS提供了圖形用戶(hù)接口,用戶(hù)可以使用圖形界面導入導出數據,并對數據進(jìn)行相應的處理。
同時(shí),DTS還以com組件的形式提供編程接口,也就是說(shuō)任何支持com組件的開(kāi)發(fā)工具都可以利用com組件使用DTS所提供的功能。DTS在SQL Server中可以保存為不同的形式,可以是包的形式,也可以保存成Visual Basic源程序文件,這樣只要在VB中編譯便可以使用DTS com組件了。
DTS和其它數據導入導出方式最大的不同就。
1. SQL Server導入導出向導,這種方式是最方便的.導入向導,微軟提供了多種數據源驅動(dòng),包括SQL Server Native Cliant, OLE DB For Oracle,Flat File Source,Access,Excel,XML等,基本上可以滿(mǎn)足系統開(kāi)發(fā)的需求.同樣導出向導也有同樣多的目的源驅動(dòng),可以把數據導入到不同的目的源.對數據庫管理人員來(lái)說(shuō)這種方式簡(jiǎn)單容易操作,導入時(shí)SQL Server也會(huì )幫你建立相同結構的Table.2. 用.NET的代碼實(shí)現(比如有一個(gè)txt或是excel的檔案,到讀取到DB中)2.1 最為常見(jiàn)的就是循環(huán)讀取txt的內容,然后一條一條的塞入到Table中.這里不再贅述.2.2 集合整體讀取,使用OLEDB驅動(dòng).代碼如下: 代碼string strOLEDBConnect = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\1\;Extended Properties='text;HDR=Yes;FMT=Delimited'";OleDbConnection conn = new OleDbConnection(strOLEDBConnect);conn.Open();SQLstmt = "select * from 1.txt";//讀取.txt中的數據DataTable dt=new DataTable();OleDbDataAdapter da = new OleDbDataAdapter(SQLstmt, conn);da.Fill(dt);//在DataSet的指定范圍中添加或刷新行以匹配使用DataSet、DataTable 和IDataReader 名稱(chēng)的數據源中的行。
if(dt.Rows.Count>0)foreach(DataRow dr in dt.Rows){SQLstmt = "insert into MyTable values('" + dr。"3.BCP,可以用作大容量的數據導入導出,也可以配合來(lái)使用.語(yǔ)法:代碼bcp {[[database_name.][schema].]{table_name | view_name} | "query"}{in | out | queryout | format} data_file[-mmax_errors] [-fformat_file] [-x] [-eerr_file][-Ffirst_row] [-Llast_row] [-bbatch_size][-ddatabase_name] [-n] [-c] [-N] [-w] [-V (70 | 80 | 90 )][-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term][-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size][-S [server_name[\instance_name]]] [-Ulogin_id] [-Ppassword][-T] [-v] [-R] [-k] [-E] [-h"hint [,。
n]"]請注意數據導入導出的方向參數:in,out,queryout如: 如:4.BULK INSERT. T-SQL的命令,允許直接導入數據語(yǔ)法: BULK INSERT[ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ]FROM 'data_file'[ WITH([ [ , ] BATCHSIZE =batch_size ][ [ , ] CHECK_CONSTRAINTS ][ [ , ] CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ][ [ , ] DATAFILETYPE ={ 'char' | 'native'| 'widechar' | 'widenative' } ][ [ , ] FIELDTERMINATOR = 'field_terminator' ][ [ , ] FIRSTROW = first_row ][ [ , ] FIRE_TRIGGERS ][ [ , ] FORMATFILE ='format_file_path' ][ [ , ] KEEPIDENTITY ][ [ , ] KEEPNULLS ][ [ , ] KILOBYTES_PER_BATCH =kilobytes_per_batch ][ [ , ] LASTROW =last_row ][ [ , ] MAXERRORS =max_errors ][ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,。n ] ) ][ [ , ] ROWS_PER_BATCH =rows_per_batch ][ [ , ] ROWTERMINATOR ='row_terminator' ][ [ , ] TABLOCK ][ [ , ] ERRORFILE ='file_name' ])] 重要參數:FIELDTERMINATOR,字段分隔符FIRSTROW:第一個(gè)數據行ROWTERMINATOR:行終結符 如:BULK INSERT dbo.ImportTest FROM 'C:\ImportData.txt' WITH ( FIELDTERMINATOR =',', FIRSTROW = 2 )5. OPENROWSET也是T-SQL的命令,包含有DB連接的信息和其它導入方法不同的是,OPENROWSET可以作為一個(gè)目標表參與INSERT,UPDATE,DELETE操作.語(yǔ)法: OPENROWSET ( { 'provider_name', { 'datasource';'user_id';'password'| 'provider_string' }, { [ catalog. ] [ schema. ] object| 'query'}| BULK 'data_file',{ FORMATFILE ='format_file_path' [ ]| SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }} ) ::=[ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ][ , ERRORFILE ='file_name' ][ , FIRSTROW = first_row ][ , LASTROW = last_row ][ , MAXERRORS = maximum_errors ][ , ROWS_PER_BATCH =rows_per_batch ] 如:INSERT INTO dbo.ImportTest SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\ImportData.xls', 'SELECT * FROM [Sheet1$]') WHERE A1 IS NOT NULL6.OPENDATASOURCE語(yǔ)法:OPENDATASOURCE ( provider_name,init_string )如:INSERT INTO dbo.ImportTest SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=C:\ImportData.xls;Extended Properties=Excel 8.0')。
[Sheet1$]7.OPENQUERY.是在linked server的基礎上執行的查詢(xún).所以執行之前必須先建立好link server.OPENQUERY的結果集可以作為一個(gè)table參與DML的操作.語(yǔ)法:OPENQUERY (linked_server ,'query')如:EXEC sp_addlinkedserver 'ImportData','Jet 4.0', 'Microsoft.Jet.OLEDB.4.0','C:\ImportData.xls',NULL,'Excel 8.0' GOINSERT INTO dbo.ImportTest SELECT * FROM OPENQUERY(ImportData, 'SELECT * FROM [Sheet1$]')。
1、打開(kāi)電腦,在電腦桌面的開(kāi)始界面中找到mysql,如圖所示。
2、雙擊打開(kāi)mysql軟件,并輸入密碼,如圖所示。
3、如果sql文件的內容中有創(chuàng )建數據庫的語(yǔ)句,或者想將表存放在已有的數據庫,在這里就不用創(chuàng )建數據庫。
4、輸入“show databases;”就能看到自己創(chuàng )建的數據庫,如圖所示。
5、輸入“use 數據庫名”,開(kāi)始使用這個(gè)數據庫,如圖所示。
6、開(kāi)始導入sql文件,輸入“source sql文件的路徑”(注意文件路徑要是復制來(lái)的,要將"\"全部換成“/”)。
7、最后輸入“show tables”,就會(huì )看到導入的數據了,如圖所示。
一、導出導入SQL Server里某個(gè)數據庫 1.在SQL Server企業(yè)管理器里選中要轉移的數據庫,按鼠標右鍵,選所有任務(wù)->備份數據庫。
2.備份 選數據庫-完全, 目的 備份到 按添加按鈕 文件名 在SQL Server服務(wù)器硬盤(pán)下輸入一個(gè)自定義的備份數據庫文件名(后綴一般是bak) 重寫(xiě) 選重寫(xiě)現有媒體 最后按確定按鈕。 如果生成的備份數據庫文件大于1M,要用壓縮工具壓縮后再到Internet上傳輸。
3.通過(guò)FTP或者remote desktop或者pcanywhere等方法 把第二步生成的備份數據庫文件或者其壓縮后的文件傳到目的SQL Server數據庫,如果有壓縮要解壓。 4.目的SQL Server數據庫如果還沒(méi)有此數據庫,先創(chuàng )建一個(gè)新的數據庫; 然后選中這個(gè)新創(chuàng )建的數據庫,按鼠標右鍵,選所有任務(wù)->還原數據庫 還原->從設備->選擇設備->磁盤(pán)->添加(找到要導入的備份數據庫文件名)->確定 還原備份集->數據庫-完全 最后按確定按鈕。
完全的數據庫導入成功了。 (如果在已經(jīng)存在的SQL Server數據庫上還原數據庫可能遇到有還有其它人正在使用它而恢復操做失敗, 可以去看 ->管理->當前活動(dòng)->鎖/對象->找到數據庫下鎖的進(jìn)程號->到查詢(xún)分析器里用kill 進(jìn)程號殺掉這些鎖, 然后再做還原) 注意:如果在原有的目的SQL Server數據庫上從備份文件(*.bak)還原數據庫 會(huì )把已經(jīng)存在的表、存儲過(guò)程等數據庫對象全部替換成最近這次導入的備份數據庫里的內容。
如果一定要還原備份文件(*.bak)里部分數據,需要另外建一個(gè)新數據庫, 其邏輯名稱(chēng)和數量同備份文件(*.bak)里數據庫的邏輯名稱(chēng)和數量一致; 新數據庫的物理文件名稱(chēng)取得一定要和備份文件(*.bak)里數據庫的物理文件不一樣才行。 二、導出導入SQL Server里某個(gè)表 1.沒(méi)有防火墻,同一個(gè)局域網(wǎng)里或不在同一個(gè)局域網(wǎng)里,但通過(guò)Internet可以互相訪(fǎng)問(wèn) 在SQL Server企業(yè)管理器里選中目的數據庫 ,按鼠標右鍵,選所有任務(wù)->導入數據-> 彈出數據轉換服務(wù)導入/導出向導窗口->下一步-> 選數據源-> 數據源(用于SQL Server的Microfost OLE DB提供程序)-> 服務(wù)器(可選擇局域網(wǎng)內能訪(fǎng)問(wèn)到的所有SQL Server服務(wù)器,或者直接輸入IP地址)-> 選擇使用windows身份驗證還是使用SQL Serve身份驗證(輸入數據庫的用戶(hù)名和密碼)-> 數據庫(可選擇上面選中SQL Server服務(wù)器上所有權限范圍內的數據庫)->下一步-> 選擇目的->目的(用于SQL Server的Microfost OLE DB提供程序)-> 服務(wù)器(默認為上一步里選中的導出服務(wù)器,也可以選其它局域網(wǎng)內能訪(fǎng)問(wèn)到的所有SQL Server服務(wù)器,或者直接輸入IP地址)-> 目的數據庫(可選擇上面選中SQL Server服務(wù)器上所有權限范圍內的數據庫)->下一步-> 制定表復制或查詢(xún)->選從源數據庫復制表和視圖(也可以選擇用一條查詢(xún)指定要傳輸的數據)->下一步-> 選擇源表和視圖->在要導入的表和視圖前面選中源->目的出現同樣的表名(可以手工修改成別的表名)-> 轉換->列映射和轉換里面可以修改源表和目的表之間字段的對應關(guān)系,修改目的表字段的類(lèi)型和長(cháng)度等, 并可以選擇創(chuàng )建目的表,在目的表中增加行,除去并重新創(chuàng )建目的表,啟用標志插入等選項->確定->下一步-> 保存、調度和復制包->時(shí)間->立即運行(如果要實(shí)現隔一段時(shí)間自動(dòng)導出導入數據,選調度DTS包以便以后執行)-> 保存(可以不選)->[ 保存DTS包(如果以后還要轉移這批相同的數據,可以把本次導出導入的內容和步驟保存起來(lái), 存到SQL Server即可,保存的時(shí)候要輸入DTS的包名及詳細描述)->下一步-> ]->完成 正在執行包->圖形界面顯示創(chuàng )建表及插入記錄的步驟和狀態(tài)->完成 2.經(jīng)過(guò)防火墻,不在同一個(gè)局域網(wǎng)里 ①、導出表里的數據到文本文件: 在SQL Server企業(yè)管理器里選中目的數據庫,按鼠標右鍵,選所有任務(wù)-> 導入數據->彈出數據轉換服務(wù)導入/導出向導窗口->下一步-> 選數據源-> 數據源(用于SQL Server的Microfost OLE DB提供程序)-> 服務(wù)器(可選擇局域網(wǎng)內能訪(fǎng)問(wèn)到的所有SQL Server服務(wù)器)-> 選擇使用windows身份驗證還是使用SQL Serve身份驗證(輸入數據庫的用戶(hù)名和密碼)-> 數據庫(可選擇上面選中SQL Server服務(wù)器上所有權限范圍內的數據庫)->下一步-> 選擇目的->目的(文本文件)-> 文件名(在自己的電腦硬盤(pán)中生成一個(gè)自定義的文本文件) ->下一步-> 制定表復制或查詢(xún)->選從源數據庫復制表和視圖(也可以選擇用一條查詢(xún)指定要傳輸的數據)->下一步-> 選擇目的文件格式->源(選擇要導出的表)->用默認的帶分隔符->選第一行包含有列名稱(chēng)選項->下一步-> 保存、調度和復制包->時(shí)間->立即運行(如果要實(shí)現隔一段時(shí)間自動(dòng)導出到文本文件,選調度DTS包以便以后執行)-> 保存(可以不選)-> [保存DTS包(保存的時(shí)候要輸入DTS的包名及詳細描述)->下一步->]->完成 正在執行包->圖形界面顯示表到文本文件的步驟和狀態(tài)->完成 如果生成的文本文件大于1M,要用壓縮工具壓縮后再到Internet上傳輸。
②、通過(guò)FTP或者remote desktop或者pcanywhere等方法把 第①步生成的文本文件或者其壓縮后的文件傳到目的SQL Server數據庫,如果有壓縮要解壓。 ③、把文本文件導入目的SQL Server數據庫 。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:3.025秒