導出數據是很常用的功能,但今天在操作時遇到了一點問題,記錄下來,方便其他人查閱。
1. 使用MySQL workbench 導出數據
在workbench里連接好數據庫之后直接點擊左側的management中的Data Export會讓你選擇數據表,但是導出的時候會提示報錯,workbench的版本和MySQL Server的版本不一致:mysqldump Version Mismatch。我在服務器上裝的是mysql5.7,windows上裝的workbench是8.0。而且這種導出數據的方式不能導出到Excel,只能是.sql文件。

解決辦法並不是換一個版本重新安裝,而是在這個workbench里操作。
在左側SCHEMA里可以看到當前數據庫內的表格,展開后選中你想導出的表,右鍵Table Data Export Wizard,然后選擇你想導出的列,點next。選擇文件保存的路徑,格式選擇csv,行分隔符選擇LF,之后便是一路next即可。

之后用Excel打開文件發現是亂碼,因為里面有中文,用記事本打開,選擇另存為,編碼選為ANSI。再次用Excel打開,這次顯示正常,只不過所有列都混在第一列里。

接下來便是CSV文件轉Excel文件。
在Excel里選中第一列,點菜單欄里的數據,分列。先點下一步,然后選擇分隔符號為tab鍵和分號,選擇是否覆蓋原數據,是。大功告成。


確實很奇怪,同一個軟件里的導出數據方式差別這么大。
2. 使用命令行導出
首先連接數據庫,使用下面的MySQL語句來執行:
1 select CompanyName from tablename where address='' into outfile '/home/user01/1.xls';
上面語句是從tablename中導出所有滿足條件address為空的公司名,保存的路徑是自己手動指定的,不用提前准備一個空的Excel表。
但是執行的時候可能會報錯:ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement。這說明安全設置里指定了輸出路徑。可以用下面的語句查看:
1 show variables like '%secure%';

要么保存到這個路徑下面,要么去MySQL的配置文件里修改,我就直接保存在這里吧。
這樣並不會自動存成xls文件,下載到windows后還需要轉碼,和上面一節的操作相同:先轉碼,再保存。就不多說了。
3. 將數據從Excel導入到MySql
有了以上的操作,現在導入數據只要反過來就可以了,先將Excel另存為csv,再將csv的格式在記事本里改為utf-8,然后在Mysql Workbench里操作就可以。值得注意的是Excel的表結構要和MySql里的表結構一致,等到導入完畢再操作數據庫。
