MySQL 導出數(shù)據(jù)
目前成都創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)頁空間、網(wǎng)站托管維護、企業(yè)網(wǎng)站設計、錫山網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
MySQL中你可以使用SELECT…INTO OUTFILE語句來簡單的導出數(shù)據(jù)到文本文件上。
使用 SELECT … INTO OUTFILE 語句導出數(shù)據(jù)
以下實例中我們將數(shù)據(jù)表 shulanxt_tbl 數(shù)據(jù)導出到 /tmp/shulanxt.txt 文件中:
你可以通過命令選項來設置數(shù)據(jù)輸出的指定格式,以下實例為導出 CSV 格式:
在下面的例子中,生成一個文件,各值用逗號隔開。這種格式可以被許多程序使用。
from 樹懶學堂 - 一站式數(shù)據(jù)知識平臺
SELECT … INTO OUTFILE 語句有以下屬性:
LOAD DATA INFILE是SELECT … INTO OUTFILE的逆操作,SELECT句法。為了將一個數(shù)據(jù)庫的數(shù)據(jù)寫入一個文件,使用SELECT … INTO OUTFILE,為了將文件讀回數(shù)據(jù)庫,使用LOAD DATA INFILE。
SELECT…INTO OUTFILE ‘file_name’形式的SELECT可以把被選擇的行寫入一個文件中。該文件被創(chuàng)建到服務器主機上,因此您必須擁有FILE權限,才能使用此語法。
輸出不能是一個已存在的文件。防止文件數(shù)據(jù)被篡改。
你需要有一個登陸服務器的賬號來檢索文件。否則 SELECT … INTO OUTFILE 不會起任何作用。
在UNIX中,該文件被創(chuàng)建后是可讀的,權限由MySQL服務器所擁有。這意味著,雖然你就可以讀取該文件,但可能無法將其刪除。
更多MySQL導出數(shù)據(jù)教程請見:樹懶學堂_一站式數(shù)據(jù)知識學習平臺_MySQL 導出數(shù)據(jù)
把雙方的mysql服務都停掉,直接把導出方的數(shù)據(jù)表文件(就是和數(shù)據(jù)庫表名對應的.frm.myd.myi文件)拷到導入方(注意一個表有三個文件),然后改一下數(shù)據(jù)表文件名成你要導入的表名,然后啟動mysql服務
,如果導入方原來的表有數(shù)據(jù),可以把原來的數(shù)據(jù)用正常方式導出,然后在工具里面導入合并就可以了,
再有一個可行的方法就是自寫代碼一行一行的轉移數(shù)據(jù)了
caching_sha2_password認證插件提供更多的密碼加密方式,并且在加密方面具有更好的表現(xiàn),目前MySQL?8.0選用caching_sha2_password作為默認的認證插件,MySQL?5.7的認證插件是MySQL_native_password。如果客戶端版本過低,會造成無法識別MySQL?8.0的加密認證方式,最終導致連接問題。
MySQL存儲引擎現(xiàn)在負責提供自己的分區(qū)處理程序,而MySQL服務器不再提供通用分區(qū)支持,InnoDB和NDB是唯一提供MySQL?8.0支持的本地分區(qū)處理程序的存儲引擎。?如果分區(qū)表用的是別的存儲引擎,存儲引擎必須進行修改。要么將其轉換為InnoDB或NDB,要么刪除其分區(qū)。通過MySQLdump從5.7獲取的備份文件,在導入到8.0環(huán)境前,需要確保創(chuàng)建分區(qū)表語句中指定的存儲引擎必須支持分區(qū),否則會報錯。
MySQL?8.0的默認字符集utf8mb4,可能會導致之前數(shù)據(jù)的字符集跟新建對象的字符集不一致,為了避免新舊對象字符集不一致的情況,可以在配置文件將字符集和校驗規(guī)則設置為舊版本的字符集和校驗規(guī)則。
MySQL?8.0啟動使用的lower_case_table_names值必須跟初始化時使用的一致。使用不同的設置重新啟動服務器會引入與標識符的排序和比較方式不一致的問題。
lower_case_table_names?
要避免MySQL?8.0上的啟動失敗,MySQL配置文件中的sql_mode系統(tǒng)變量不能包含NO_AUTO_CREATE_USER。
從MySQL?5.7.24和MySQL?8.0.13開始,MySQLdump從存儲程序定義中刪除了NO_AUTO_CREATE_USER。必須手動修改使用早期版本的MySQLdump創(chuàng)建的轉儲文件,以刪除NO_AUTO_CREATE_USER。
在MySQL?8.0.11中,刪除了這些不推薦使用的兼容性SQL Mode:DB2,MAXDB,MSSQL,MySQL323,MySQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。從5.7到8.0的復制場景中,如果語句使用到廢棄的SQL Mode會導致復制異常。
在執(zhí)行到MySQL?8.0.3或更高版本的in-place升級時,BACKUP_ADMIN權限自動授予具有RELOAD權限的用戶。
本文對MySQL 5.7到MySQL 8.0的升級過程中出現(xiàn)部分易出現(xiàn)問題進行整理:升級對MySQL版本的要求、升級都做了哪些內容、數(shù)據(jù)庫升級做了哪些步驟以及注意事項,希望對大家版本升級有幫助。
1、 mysqldump命令備份數(shù)據(jù)
在MySQL中提供了命令行導出數(shù)據(jù)庫數(shù)據(jù)以及文件的一種方便的工具mysqldump,我們可以通過命令行直接實現(xiàn)數(shù)據(jù)庫內容的導出dump,首先我們簡單了解一下mysqldump命令用法:
#MySQLdump常用
mysqldump -u root -p --databases 數(shù)據(jù)庫1 數(shù)據(jù)庫2 xxx.sql
2、 mysqldump常用操作實例
2.1備份全部數(shù)據(jù)庫的數(shù)據(jù)和結構
mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql
2.2備份全部數(shù)據(jù)庫的結構(加 -d 參數(shù))
mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql
2.3 備份全部數(shù)據(jù)庫的數(shù)據(jù)(加 -t 參數(shù))
mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql
2.4 備份單個數(shù)據(jù)庫的數(shù)據(jù)和結構(,數(shù)據(jù)庫名mydb)
mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql
2.5 備份單個數(shù)據(jù)庫的結構
mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql
2.6 備份單個數(shù)據(jù)庫的數(shù)據(jù)
mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql2
2.7 備份多個表的數(shù)據(jù)和結構(數(shù)據(jù),結構的單獨備份方法與上同)
mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql
2.8 一次備份多個數(shù)據(jù)庫
mysqldump -uroot -p123456 --databases db1 db2 /data/mysqlDump/mydb.sql
mysql標準化的遷移工具是mysqldump.exe、mysqlimport.exe,你運行這兩個工具,使用--help就可以知道怎么使用了,他們用來把MYSQL數(shù)據(jù)庫轉換為文本文件,以及把文本文件導入到新的MYSQL數(shù)據(jù)庫中。事實上這個文本文件可以導入到其它非MYSQL數(shù)據(jù)庫里面,比如INFORMIX、DB2等,需要簡單寫一下SQL語句即可。
不過,我的服務器多次升級和遷移中測試發(fā)現(xiàn),MYSQL數(shù)據(jù)庫文件是可以拷貝的,也就是二進制兼容的,包括我在FreeBSD、LINUX、WINDOWS之間遷移數(shù)據(jù)都是成功的。