linux下
一、導出數據庫用mysqldump命令(注意mysql的安裝路徑,即此命令的路徑):
1、導出數據和表結構:
mysqldump -u用戶名 -p密碼 數據庫名 > 數據庫名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql
敲回車后會提示輸入密碼
mysqldump還有一個參數,就是--where 指定條件,這樣我們就可以對一張表里的某些符合條件的數據,進行備份,導出.sql文件了
mysqldump -u root -p 數據庫名 --no-create-db=TRUE --no-create-info=TRUE --add-drop-table=FALSE --where="id>1000" 表名 > 導出文件名.sql;
2、只導出表結構
mysqldump -u用戶名 -p密碼 -d 數據庫名 > 數據庫名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql
注:/usr/local/mysql/bin/ ---> mysql的data目錄
二、導入數據庫
1、首先建空數據庫
mysql>create database abc;
2、導入數據庫
方法一:
(1)選擇數據庫
mysql>use abc;
(2)設置數據庫編碼
mysql>set names utf8;
(3)導入數據(注意sql文件的路徑)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用戶名 -p密碼 數據庫名 < 數據庫名.sql
#mysql -uabc_f -p abc < abc.sql
window下
1.導出整個數據庫
mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名
mysqldump -u dbuser -p dbname > dbname.sql
2.導出一個表
mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名
mysqldump -u dbuser -p dbname users> dbname_users.sql
3.導出一個數據庫結構
mysqldump -u dbuser -p -d --add-drop-table dbname >d:/dbname_db.sql
-d 沒有數據 --add-drop-table 在每個create語句之前增加一個drop table
4.導入數據庫
mysql -u dbuser -p dbname < dbname.sql
mysql -u dbuser -p dbname users < dbname_users.sql
常用source 命令
進入mysql數據庫控制台,如
mysql -u root -p
mysql>use 數據庫
然后使用source命令,后面參數為腳本文件(如這里用到的.sql)
mysql>source d:/dbname.sql
有的時候需要把在一張表中用 select 語句查詢出來的結果保存到另一張結構相同的表中,可以有幾種方法來實現:
在命令行下使用一對SQL語句完成該操作:
導出查詢結果:Select 語句 into outfile '保存路徑+文件名';
導入查詢結果:load data local infile '保存路徑+文件名' into table 表明 character set utf8;
這里導出有可能會報錯,本人一踩坑並填滿了。。。
1,導入文件亂碼問題
可以用查詢列 CONVERT轉換
如:select xxx,CONVERT ((`value`) USING gbk) as xx , xx into outfile '保存路徑+文件名' from table
2,報如下錯誤
Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
這個是限制了導入導出目錄,或者禁止了導入導出。
mysql中執行一下下邊語句,查看 secure-file-priv
show variables like '%secure%'
secure_file_prive=null -- 限制mysqld 不允許導入導出
secure_file_priv=/tmp/ -- 限制mysqld的導入導出只能發生在/tmp/目錄下
secure_file_priv=' ' --不對mysqld 的導入 導出做限制
根據自己需要修改配置文件即可