日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 导入导出.sql文件

發(fā)布時間:2024/4/13 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 导入导出.sql文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

備份數(shù)據(jù)庫(包含全部表和全部存儲過程):
C:\Documents and Settings\Administrator>mysqldump -h localhost -u root -p -R bannei >d:/
log/mydb.sql
Enter password: ******

//備份數(shù)據(jù)庫所有表
C:\Documents and Settings\Administrator>mysqldump -h localhost -u root -p jxhxt >d:/log/bn2010-01-29.sql
Enter password: ******

//備份數(shù)據(jù)庫中指定表數(shù)據(jù),多個表之間用空格分開
C:\Documents and Settings\Administrator>mysqldump -h localhost -u root -p jxhxt invite_mail auth_user >d:/log/bn2010-01-29.sql
Enter password: ******

//備份全部存儲過程

C:\Documents and Settings\Administrator>mysqldump -h localhost -u root -p -t -d -R bannei >d:/log/myproc.sql
Enter password: ******

//導(dǎo)出一個數(shù)據(jù)庫結(jié)構(gòu)
C:\Documents and Settings\Administrator>mysqldump -u root -p -d --add-drop-table ruyi_db>d:\ruyi_db.sql

//導(dǎo)入數(shù)據(jù)文件
C:\Documents and Settings\Administrator>mysql -h localhost -u root -p bannei <d:/log/mydb.sql
Enter password: ******

導(dǎo)入數(shù)據(jù)庫,常用source 命令
進入mysql數(shù)據(jù)庫控制臺,如mysql -u root -p

mysql>use 數(shù)據(jù)庫

然后使用source命令,后面參數(shù)為腳本文件(如這里用到的.sql)
mysql>source d:\ruyi_db.sql

?

?

1、mysqldump1.1 備份

mysqldump?是采用SQL級別的備份機制,它將數(shù)據(jù)表導(dǎo)成 SQL 腳本文件,在不同的 MySQL 版本之間升級時相對比較合適,這也是最常用的備份方法。
現(xiàn)在來講一下?mysqldump?的一些主要參數(shù):

  • --compatible=name

    它告訴 mysqldump,導(dǎo)出的數(shù)據(jù)將和哪種數(shù)據(jù)庫或哪個舊版本的 MySQL 服務(wù)器相兼容。值可以為?ansi、 mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、 no_tables_options、no_field_options?等,要使用幾個值,用逗號將它們隔開。當(dāng)然了,它并不保證能完全兼容,而是盡量兼容。

  • --complete-insert,-c

    導(dǎo)出的數(shù)據(jù)采用包含字段名的完整?INSERT?方式,也就是把所有的值都寫在一行。這么做能提高插入效率,但是可能會受到?max_allowed_packet?參數(shù)的影響而導(dǎo)致插入失敗。因此,需要謹(jǐn)慎使用該參數(shù),至少我不推薦。

  • --default-character-set=charset

    指定導(dǎo)出數(shù)據(jù)時采用何種字符集,如果數(shù)據(jù)表不是采用默認(rèn)的?latin1?字符集的話,那么導(dǎo)出時必須指定該選項,否則再次導(dǎo)入數(shù)據(jù)后將產(chǎn)生亂碼問題。

  • --disable-keys

    告訴?mysqldump?在?INSERT?語句的開頭和結(jié)尾增加?/*!40000 ALTER TABLE table DISABLE KEYS */;和?/*!40000 ALTER TABLE table ENABLE KEYS */;?語句,這能大大提高插入語句的速度,因為它是在插入完所有數(shù)據(jù)后才重建索引的。該選項只適合?MyISAM?表。

  • --extended-insert = true|false

    默認(rèn)情況下,mysqldump?開啟?--complete-insert?模式,因此不想用它的的話,就使用本選項,設(shè)定它的值為?false?即可。

  • --hex-blob

    使用十六進制格式導(dǎo)出二進制字符串字段。如果有二進制數(shù)據(jù)就必須使用本選項。影響到的字段類型有?BINARY、VARBINARY、 BLOB。

  • --lock-all-tables,-x

    在開始導(dǎo)出之前,提交請求鎖定所有數(shù)據(jù)庫中的所有表,以保證數(shù)據(jù)的一致性。這是一個全局讀鎖,并且自動關(guān)閉--single-transaction?和?--lock-tables?選項。

  • --lock-tables

    它和?--lock-all-tables?類似,不過是鎖定當(dāng)前導(dǎo)出的數(shù)據(jù)表,而不是一下子鎖定全部庫下的表。本選項只適用于?MyISAM?表,如果是?Innodb?表可以用?--single-transaction?選項。

  • --no-create-info,-t

    只導(dǎo)出數(shù)據(jù),而不添加?CREATE TABLE?語句。

  • --no-data,-d

    不導(dǎo)出任何數(shù)據(jù),只導(dǎo)出數(shù)據(jù)庫表結(jié)構(gòu)。

  • --opt

    這只是一個快捷選項,等同于同時添加?--add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset?選項。本選項能讓?mysqldump?很快的導(dǎo)出數(shù)據(jù),并且導(dǎo)出的數(shù)據(jù)能很快導(dǎo)回。該選項默認(rèn)開啟,但可以用?--skip-opt?禁用。注意,如果運行?mysqldump?沒有指定?--quick?或?--opt?選項,則會將整個結(jié)果集放在內(nèi)存中。如果導(dǎo)出大數(shù)據(jù)庫的話可能會出現(xiàn)問題。

  • --quick,-q

    該選項在導(dǎo)出大表時很有用,它強制?mysqldump?從服務(wù)器查詢?nèi)〉糜涗浿苯虞敵龆皇侨〉盟杏涗浐髮⑺鼈兙彺娴絻?nèi)存中。

  • --routines,-R

    導(dǎo)出存儲過程以及自定義函數(shù)。

  • --single-transaction

    該選項在導(dǎo)出數(shù)據(jù)之前提交一個?BEGIN?SQL語句,BEGIN?不會阻塞任何應(yīng)用程序且能保證導(dǎo)出時數(shù)據(jù)庫的一致性狀態(tài)。它只適用于事務(wù)表,例如?InnoDB?和?BDB。
    本選項和?--lock-tables?選項是互斥的,因為?LOCK TABLES?會使任何掛起的事務(wù)隱含提交。
    要想導(dǎo)出大表的話,應(yīng)結(jié)合使用?--quick?選項。

  • --triggers

    同時導(dǎo)出觸發(fā)器。該選項默認(rèn)啟用,用?--skip-triggers?禁用它。

其他參數(shù)詳情請參考手冊,我通常使用以下 SQL 來備份?MyISAM?表:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr \--default-character-set=utf8 --opt --extended-insert=false \--triggers -R --hex-blob -x db_name > db_name.sql

使用以下 SQL 來備份?Innodb?表:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr \--default-character-set=utf8 --opt --extended-insert=false \--triggers -R --hex-blob --single-transaction db_name > db_name.sql

另外,如果想要實現(xiàn)在線備份,還可以使用?--master-data?參數(shù)來實現(xiàn),如下:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr \--default-character-set=utf8 --opt --master-data=1 \--single-transaction --flush-logs db_name > db_name.sql

它只是在一開始的瞬間請求鎖表,然后就刷新binlog了,而后在導(dǎo)出的文件中加入CHANGE MASTER?語句來指定當(dāng)前備份的binlog位置,如果要把這個文件恢復(fù)到slave里去,就可以采用這種方法來做。

1.2 還原

用?mysqldump?備份出來的文件是一個可以直接倒入的 SQL 腳本,有兩種方法可以將數(shù)據(jù)導(dǎo)入。

  • 直接用?mysql?客戶端

    例如:

    /usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql

  • 用 SOURCE 語法

    其實這不是標(biāo)準(zhǔn)的 SQL 語法,而是?mysql?客戶端提供的功能,例如:

    SOURCE /tmp/db_name.sql;

    這里需要指定文件的絕對路徑,并且必須是?mysqld?運行用戶(例如 nobody)有權(quán)限讀取的文件。

文章來源:http://imysql.cn/?q=node/128

?

一.MYSQL的命令行模式的設(shè)置:
桌面->我的電腦->屬性->環(huán)境變量->新建->
PATH=“;path\mysql\bin;”其中path為MYSQL的安裝路徑。
二.簡單的介紹一下命令行進入MYSQL的方法:
1.C:\>mysql -h hostname -u username -p
按ENTER鍵,等待然后輸入密碼。這里hostname為服務(wù)器的名稱,如localhost,username為MYSQL的用戶名,如root。
進入命令行后可以直接操作MYSQL了。
2.簡單介紹一下MYSQL命令:
?? ?mysql->CREATE DATABASE dbname;//創(chuàng)建數(shù)據(jù)庫
?? ?mysql->CREATE TABLE tablename;//創(chuàng)建表
?? ?mysql->SHOW DATABASES;//顯示數(shù)據(jù)庫信息,有那些可用的數(shù)據(jù)庫。
mysql->USE dbname;//選擇數(shù)據(jù)庫
?? ?mysql->SHOW TABLES;//顯示表信息,有那些可用的表
?? ?mysql->DESCRIBE tablename;//顯示創(chuàng)建的表的信息
三.從數(shù)據(jù)庫導(dǎo)出數(shù)據(jù)庫文件:
1.將數(shù)據(jù)庫mydb導(dǎo)出到e:\mysql\mydb.sql文件中:
打開開始->運行->輸入cmd??? ?進入命令行模式
c:\>mysqldump -h localhost -u root -p mydb >e:\mysql\mydb.sql
然后輸入密碼,等待一會導(dǎo)出就成功了,可以到目標(biāo)文件中檢查是否成功。


2.將數(shù)據(jù)庫mydb中的mytable導(dǎo)出到e:\mysql\mytable.sql文件中:
c:\>mysqldump -h localhost -u root -p mydb mytable>e:\mysql\mytable.sql

C:\Documents and Settings\XuWei>mysql -h localhost -u root -p bannei < D:\temp\b
annei2010-06-06-23-59\bannei2010-06-06-23-59.sql
Enter password: ******


3.將數(shù)據(jù)庫mydb的結(jié)構(gòu)導(dǎo)出到e:\mysql\mydb_stru.sql文件中:
c:\>mysqldump -h localhost -u root -p mydb --add-drop-table >e:\mysql\mydb_stru.sql


四.從外部文件導(dǎo)入數(shù)據(jù)到數(shù)據(jù)庫中:
從e:\mysql\mydb2.sql中將文件中的SQL語句導(dǎo)入數(shù)據(jù)庫中:
1.從命令行進入mysql,然后用命令CREATE DATABASE mydb2;創(chuàng)建數(shù)據(jù)庫mydb2。
2.退出mysql 可以輸入命令exit;或者quit;
3.在CMD中輸入下列命令:
c:\>mysql -h localhost -u root -p mydb2 < e:\mysql\mydb2.sql
然后輸入密碼,就OK了。


五.下面談一下關(guān)于導(dǎo)入文件大小限制問題的解決:
默認(rèn)情況下:mysql 對導(dǎo)入文件大小有限制的,最大為2M,所以當(dāng)文件很大時候,直接無法導(dǎo)入,下面就這個問題的解決列舉如下:
1.在php.ini中修改相關(guān)參數(shù):
影響mysql導(dǎo)入文件大小的參數(shù)有三個:
??? ?memory_limit=128M,upload_max_filesize=2M,post_max_size=8M
修改upload_max_filesize=200 M 這里修改滿足你需要的大小,
可以同時修改其他兩項memory_limit=250M post_max_size=200M
這樣就可以導(dǎo)入200M以下的.sql文件了。

?

今天在本機器上備份測試服務(wù)器數(shù)據(jù)遇到1449錯誤,特記錄解決方案

C:\Users\Administrator>mysqldump -h 192.168.0.113 -uroot -p123456 -R tbkt >d:/backups/tbkt20130928.sql

mysqldump: Got error: 1449: The user specified as a definer ('bannei'@'%') doesnot exist when using LOCK TABLES

mysqldump -h192.168.0.113 -uroot -p123456 --opt --extended-insert=true --single-transaction -R --flush-logs --database tbkt > /home/tbkt.sql

放狗搜,有說這有說那,后來使用CRT登陸到測試服務(wù)器后使用一下語句成功備份

mysqldump -h192.168.0.113 -uroot -p --opt --extended-insert=true --single-transaction -R --flush-logs --database tbkt > /home/tbkt2.sql

?

?

文章來源:http://www.cnblogs.com/cnkenny/archive/2009/04/22/1441297.html

?

轉(zhuǎn)載于:https://www.cnblogs.com/weiok/p/4920149.html

總結(jié)

以上是生活随笔為你收集整理的mysql 导入导出.sql文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。