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