本文目錄一覽:
MySQL數據導入導出的幾種方法
1.使用create table xx as select
create table testtable as select distinct username,mname,college,mobno,cid from swdaydetail where sdate=’20171101′ and sdate’20171130′;1
2.使用MySQL的SELECT INTO OUTFILE 、Load data file
LOAD DATA INFILE語句從一個文本文件中以很高的速度讀入一個表中。當用戶一前一後地使用SELECT … INTO OUTFILE 和LOAD DATA
INFILE 將數據從一個數據庫寫到一個文件中,然後再從文件中將它讀入數據庫中時,兩個命令的字段和行處理選項必須匹配。否則,LOAD DATA INFILE 將不能正確地解釋文件內容。
假設用戶使用SELECT … INTO OUTFILE 以逗號分隔字段的方式將數據寫入到一個文件中:
SELECT * INTO OUTFILE ‘data.txt’ FIELDS TERMINATED BY ‘,’ FROM table2; 1
為了將由逗號分隔的文件讀回時,正確的語句應該是:
LOAD DATA INFILE ‘data.txt’ INTO TABLE table2 FIELDS TERMINATED BY ‘,’; 1
如果用戶試圖用下面所示的語句讀取文件,它將不會工作,因為命令LOAD DATA INFILE 以定位符區分字段值:
LOAD DATA INFILE ‘data.txt’ INTO TABLE table2 FIELDS TERMINATED BY ‘\t’; 1
下面是用來導入導出的命令:
select * into outfile ‘ddd.txt’ fields terminated by ‘,’ from dn_location; load data infile ‘ddd.txt’ into table dn_location2 FIELDS TERMINATED BY ‘,’; 12
3.使用mysqldump ,source
mysqldump -u root -p -q -e -t webgps4 dn_location2 dn_location2.sql
mysqldump -u root -p -q -e -t –single-transaction webgps4 dn_location2 dn_location2.sql source dn_location2.sql 123
以上是導入導出數據的語句,該方法15分鐘導出1.6億條記錄,導出的文件中平均7070條記錄拼成一個insert語句,通過source進行批量插入,導入1.6億條數據耗時將近5小時。平均速度:3200W條/h。後來嘗試加上–single-transaction參數,結果影響不大。另外,若在導出時增加-w參數,表示對導出數據進行篩選,那麼導入導出的速度基本不變,篩選出的數據量越大,時間越慢而已。對於其中的參數這裡進行說明:
–quick,-q
該選項在導出大表時很有用,它強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得所有記錄後將它們緩存到內存中。
–extended-insert, -e
使用具有多個VALUES列的INSERT語法。這樣使導出文件更小,並加速導入時的速度。默認為打開狀態,使用–skip-extended-insert取消選項。
–single-transaction
該選項在導出數據之前提交一個BEGIN SQL語句,BEGIN 不會阻塞任何應用程序且能保證導出時數據庫的一致性狀態。它只適用於多版本存儲引擎,僅InnoDB。本選項和–lock-tables 選項是互斥的,因為LOCK TABLES 會使任何掛起的事務隱含提交。要想導出大表的話,應結合使用–quick 選項。在本例子中沒有起到加快速度的作用
mysqldump -uroot -p –host=localhost –all-databases –single-transaction
-t 僅導出表數據,不導出表結構
轉載自
如何導出和導入mysql數據
MySQL命令行導出數據庫:
1,進入MySQL目錄下的bin文件夾:cd MySQL中到bin文件夾的目錄
如我輸入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin
(或者直接將windows的環境變量path中添加該目錄)
2,導出數據庫:mysqldump -u 用戶名 -p 數據庫名 導出的文件名
如我輸入的命令行:mysqldump -u root -p news news.sql (輸入後會讓你輸入進入MySQL的密碼)
(如果導出單張表的話在數據庫名後面輸入表名即可)
3、會看到文件news.sql自動生成到bin文件下
命令行導入數據庫:
1,將要導入的.sql文件移至bin文件下,這樣的路徑比較方便
2,同上面導出的第1步
3,進入MySQL:mysql -u 用戶名 -p
如我輸入的命令行:mysql -u root -p (輸入同樣後會讓你輸入MySQL的密碼)
4,在MySQL-Front中新建你要建的數據庫,這時是空數據庫,如新建一個名為news的目標數據庫
5,輸入:mysqluse 目標數據庫名
如我輸入的命令行:mysqluse news;
6,導入文件:mysqlsource 導入的文件名;
如我輸入的命令行:mysqlsource news.sql;
MySQL導出導入SQL文件命令方法
1.導出整個數據庫
mysqldump -u 用戶名 -p 數據庫名 導出的`文件名
mysqldump -u wcnc -p smgp_apps_wcnc wcnc.sql
2.導出一個表
mysqldump -u 用戶名 -p 數據庫名 表名 導出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users wcnc_users.sql
3.導出一個數據庫結構
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc d:wcnc_db.sql
-d 沒有數據 –add-drop-table 在每個create語句之前增加一個
4.導入數據庫
常用source 命令
進入mysql數據庫控制台,
如mysql -u root -p
mysqluse 數據庫
然後使用source命令,後面參數為腳本文件(如這裡用到的.sql)
mysqlsource d:wcnc_db.sql
mysql怎麼導入和導出數據庫文件
附加數據庫
或者導入數據庫
sql本身有數據導入的操作。但如果要從一個備份的文件中導入數據,則要進行另外的操作。下面以一個例子進行說明。
sql服務器上已有一個doe數據庫,並且裡面有大量的數據,現準備從另外一個備份文件a1.bak(不是doe數據庫的備份文件)中導入另外的數據(即導入後在doe中增加一些數據表,表中已錄有數據),並保持原doe的數據不變。
1、首先,在“sql企業管理器”中新建一個臨時數據庫a1。
2、右擊a1數據庫,選擇:所有任務->還原數據庫。
3、在“還原數據庫”窗口中,選擇:“從設備”。
4、點擊“選擇設備”。
5、點擊“添加”。
6、從文件名中選擇要還原的數據庫文件,如a1.bak。
7、點擊“確定”,返回“還原數據庫”窗口。
8、點擊“選項”卡,進入選項設置。
9、鉤選:“在現有數據庫上強制還原”。
10、修改“移到物理文件名”為:“c:\a1.ldf”、“c:\a1.mdf”。
11、點確定,即可導入備份文件中的數據到臨時數據庫a1中。
12、此時,你可以將數據從a1導入到另外一真正要導入的數據庫中,如doe數據庫。
(下面的數據導入操作為sql2000企業管理器的一般數據導入導出操作。)
13、在“sql企業管理器”中選擇“doe”數據庫。
14、右擊doe數據庫,選擇:所有任務->導入數據。
15、在“dts導入/導出嚮導”窗口的“選擇數據源”中,數據源選擇剛才建立並導入數據的臨時數據庫a1。點擊下一步。
16、在“選擇目的”中,系統已經默認為doe數據庫。
17、連續點擊“下一步”,直到完成。
經過上面的操作,你已經成功地將備份文件a1.bak中數據導入doe數據庫中,並且doe數據庫原有數據不變。
此時,你可以刪除臨時數據庫a1。
原創文章,作者:VOML,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/139683.html