mysql的導入和導出數據,刪除數據


本文轉自網絡優秀的文章

詳細可以參考https://www.cnblogs.com/Cherie/p/3309456.html

https://www.cnblogs.com/roverliang/p/6436140.html

https://www.cnblogs.com/mkfywj/p/5452045.html

https://www.cnblogs.com/waynechou/p/7794939.html

刪除表內容,不刪除表結構

truncate table 表名    --自動增長的列重置為1

delete from 表名        --自動增長的列不重置,繼續延續以前的。

一、SELECT INTO…OUTFILE語法:

select * from Table into outfile '/路徑/文件名'
fields terminated by ','
enclosed by '"'
lines terminated by '\r\n'

(1)路徑目錄必須有讀寫權限777
(2)文件名必須唯一
(3)fields terminated by ','必須存在,否則打開的文件的列在同一的單元格中出現
(4)我驗證的表結構為gbk的,否則出現亂碼

●  fields子句:在FIELDS子句中有三個亞子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。如果指定了FIELDS子句,則這三個亞子句中至少要指定一個。

(1)TERMINATED BY用來指定字段值之間的符號,例如,“TERMINATED BY ','”指定了逗號作為兩個字段值之間的標志。

(2)ENCLOSED BY子句用來指定包裹文件中字符值的符號,例如,“ENCLOSED BY ' " '”表示文件中字符值放在雙引號之間,若加上關鍵字OPTIONALLY表示所有的值都放在雙引號之間。

(3)ESCAPED BY子句用來指定轉義字符,例如,“ESCAPED BY '*'”將“*”指定為轉義字符,取代“\”,如空格將表示為“*N”。

●   LINES子句:在LINES子句中使用TERMINATED BY指定一行結束的標志,如“LINES TERMINATED BY '?'”表示一行以“?”作為結束標志。

二、LOAD DATA …INFILE語句是SELECT INTO…OUTFILE語句的補語,該語句可以將一個文件中的數據導入到數據庫中。

> delete from e;
> load data infile "/data/mysql/e.sql" into table e fields terminated by ',';
三、mysql導入excel

1、第一步我們得到了一個excel表,里面有很多需要我們導入的數據。

2、刪除第1行"准考證號""XXX"....只保留我們需要的數據部分。

3、單擊"文件"--"另存為",類型選擇為"CSV(逗號分隔)(*.csv)",將excel表另存為csv文檔。中間不管提示什么一律"是"就好了...

4、重點!另存為的slyar.csv是可以用記事本或者Editplus等文本編輯器打開的,我們打開來看一下。

可以看到其實csv文檔就是txt(即你可以使用自己的txt然后換個后綴名就行),只不過把各個字段之間用","分隔開了而已。既然它是txt文檔,那么就涉及到了文件編碼的問題!默認保存的文件編碼是ANSI,如果你的數據庫(數據表)使用UTF-8編碼,那么一定要將這個csv文件另存為UTF-8格式!

 
        

5.進入phpMyAdmin創建一個表,新建字段,字段名與你要導入的excel表字段關聯且順序相同。太簡單,不截圖了。

6、在phpMyAdmin中打開你創建的表,在最上面單擊"導入"。

7、"導入文件的格式"選擇第二個"CSV 使用 LOAD DATA"。

8、"要導入的文件"選擇你剛才另存為的csv文件。

9、"字段分隔符"更改為",",就是excel另存為默認選擇的"(逗號分隔)",你可以自由選擇分隔符,通常出現在你的excel表格數據里有","的情況下。

10、"字段名"是個高級應用,這里的字段名是你數據表里的字段名,它表示你要進行填充的字段,多個字段之間用","隔開。這里為空表示全部填充,並且按順序填充,多余的數據不要。

 
        

 
        

10、檢查沒問題就可以按"執行"了。

11、"導入成功,執行了 1 個查詢"。看到這個就表示成功了,如果導入不成功請從頭到尾再仔細對照本文重做一次,如果還不行請往下看...

 
        

 
        

12、某些excel導出的數據可能會變得很奇怪,例如中間會有特殊字符神馬神馬的,總之如果這個方法不行的話,你還是可以去用我之前寫的那個軟件..

四、使用mysqldump備份和恢復數據庫
 
        

mysqldump也是MySQL轉儲數據庫常用的自帶工具,mysqldump產生副本文件有兩種情形:

 
        

1、文件是指定格式的文本文件 2、是可以執行的SQL腳本文件

使用方法有以下3種:

1、備份指定的多個數據庫。

 mysqldump -u root -p --databases choose test > roverliang.sql
 
        

2、備份所有的數據庫

 
        
mysqldump -u root -p --all-databases choose test > roverliang.sql
 
        

3、備份指定數據庫中的某些表

 
        
mysqldump -u root -p choose test > roverliang.sql
 
        

mysqldump 完整的參數是:

 
        
mysqldump -u USER_NAME -p PASSWORD [其他選項] DB [其他數據庫庫表]
 
        

--default-character-set: 設置字符集

 
        

--single-transaction : 將導出設置成事務

 
        

--no-data : 導出的SQL腳本中,將只包含創建表的create 語句。

 
        

--add-drop-table :導出的腳本中,包含 drop table if exists

 
        

--routines導出存儲過程及函數

 
        

--events導出事件

 
        

--triggers導出觸發器

 
        

導入mysqldump 的數據文件

 
        
一句命令就能搞定,在mysql終端下執行: 命令格式: source FILE_PATH source ~/demo.sql 

一、備份常用操作基本命令

1、備份命令mysqldump格式

   格式:mysqldump -h主機名  -P端口 -u用戶名 -p密碼 –database 數據庫名 > 文件名.sql 

2、備份MySQL數據庫為帶刪除表的格式

備份MySQL數據庫為帶刪除表的格式,能夠讓該備份覆蓋已有數據庫而不需要手動刪除原有數據庫。

mysqldump  --add-drop-table -uusername -ppassword -database databasename > backupfile.sql

3、直接將MySQL數據庫壓縮備份

mysqldump -hhostname -uusername -ppassword -database databasename | gzip > backupfile.sql.gz

4、備份MySQL數據庫某個(些)表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

5、同時備份多個MySQL數據庫

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql僅僅備6、僅備份份數據庫結構

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

7、備份服務器上所有數據庫

mysqldump –all-databases > allbackupfile.sql

8、還原MySQL數據庫的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

9、還原壓縮的MySQL數據庫

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

10、將數據庫轉移到新服務器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

11、--master-data 和--single-transaction

   在mysqldump中使用--master-data=2,會記錄binlog文件和position的信息 。--single-transaction會將隔離級別設置成repeatable-commited

12、導入數據庫

常用source命令,用use進入到某個數據庫,mysql>source d:\test.sql,后面的參數為腳本文件。

13、查看binlog日志

查看binlog日志可用用命令 mysqlbinlog  binlog日志名稱|more

 

14、general_log

General_log記錄數據庫的任何操作,查看general_log 的狀態和位置可以用命令show variables like "general_log%"  ,開啟general_log可以用命令set global general_log=on

二、增量備份

小量的數據庫可以每天進行完整備份,因為這也用不了多少時間,但當數據庫很大時,就不太可能每天進行一次完整備份了,這時候就可以使用增量備份。增量備份的原理就是使用了mysql的binlog志。

 1、首先做一次完整備份:

mysqldump -h10.6.208.183 -utest2 -p123  -P3310 --single-transaction  --master-data=2  test>test.sql這時候就會得到一個全備文件test.sql

在sql文件中我們會看到:
-- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;是指備份后所有的更改將會保存到bin-log.000002二進制文件中。
2、在test庫的t_student表中增加兩條記錄,然后執行flush logs命令。這時將會產生一個新的二進制日志文件bin-log.000003,bin-log.000002則保存了全備過后的所有更改,既增加記錄的操作也保存在了bin-log.00002中。

3、再在test庫中的a表中增加兩條記錄,然后誤刪除t_student表和a表。a中增加記錄的操作和刪除表a和t_student的操作都記錄在bin-log.000003中。

 三、恢復

1、首先導入全備數據

mysql -h10.6.208.183 -utest2 -p123  -P3310 < test.sql,也可以直接在mysql命令行下面用source導入

2、恢復bin-log.000002

   mysqlbinlog bin-log.000002 |mysql -h10.6.208.183 -utest2 -p123  -P3310  

3、恢復部分 bin-log.000003

   在general_log中找到誤刪除的時間點,然后更加對應的時間點到bin-log.000003中找到相應的position點,需要恢復到誤刪除的前面一個position點。

可以用如下參數來控制binlog的區間

--start-position 開始點 --stop-position 結束點

--start-date 開始時間  --stop-date  結束時間

找到恢復點后,既可以開始恢復。

  mysqlbinlog mysql-bin.000003 --stop-position=208 |mysql -h10.6.208.183 -utest2 -p123  -P3310 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM