Import CSV File Into MySQL Table
最近在玩 MySQL Workbench,想做從數據轉成動態圖表,說起來挺輕鬆的,網站很多都有呈現這樣的圖像化功能,執行起來倒是一大挑戰...
目標先做出數據表格在前端上可以搜尋就好....
開始列表一下該做甚麼的活
建立MYSQL Workbench — — install server , workbench and shell
建立數據庫 — — databases,tables
匯入 數據資料— — import csv
前端取得數據庫 — — use json format
前端設定MySQL資料庫連結 — — database.js
製作前端網頁 — express or vuejs (not sure)
以上簡陋目標指引,希望我可以做好~
第一步 建立MYSQL Workbench
這比較輕鬆,點擊 MySQL官網,看你要在Windows or linux做,再去下載對應的安裝包,我下載Windows(GA)版本,選擇客製化模式(Custom)
選擇servers , workbench and shell 最新版本(8.0.25)
之後需要注意的是,設定root localhost的密碼,可以先用簡單的,會在後面頻繁使用,熟悉再換自己安全的密碼
成功下載後會跳出MySQL Shell的視窗(如下)
可以點開剛剛下載的軟體 — — MySQL installer 確認你有沒有下載成功
p.s 下載完成後,環境變數可能會有人沒有同步改到PATH路徑,記得手動新增唷
第二步 建立數據庫
我利用Mysql 指令去完成動作,CMD打開 ((有試過git bash 沒辦法用QQ
mysql --versioin — — 確認你的版本是否為8.0.25
mysql -u root -p — — 登入(u=user;p=password)
show databases; — — 顯示現有的數據庫
create database test_demo; — — 建立數據庫名為test_demo
接者我們製作table,你要用指令也可以,workbench比較簡單,我打開MySQL Workbench,登入root,你會看到剛剛建立好的test_demo數據庫,點開test_demo,找到table,按右鍵[create table],我們要預先建立的資料表欄位,才能匯入資料。
其他操作(建立其他欄位、設定主鍵),可以再做調整
輸入完成後
好啦~完成基本步驟了!!!!
第三步 匯入 數據資料
我們回到CMD 打指令匯入csv檔案快很多
首先,你會遇到不少問題,我們見招猜招,別擔心
下面這張其實是完整的程式碼了,可是馬上就出現error 3948 or error 2068,主要是在說你的local 的檔案(infile file)在匯入過程中被拒絕了。
為甚麼會被拒絕?
我們剛剛下載的MySQL是Server,代表我們現在是server端,但我們要拿client端(local)的資料,簡單說如果我們沒有客戶的同意是不能隨便拿客戶端的資料,要經過客戶端的同意,那徵求同意權就是要找local_infile,將不同意改為同意。
另一方面也會有網路環境上的問題,與 MySQL 服務器相關的客戶端實際上是 Web 服務器,而不是由連接到 Web 服務器的用戶運行的遠程程序。很多客戶資料從server 都可以撈到(網路安全啊~要小心資料被竊取了)
solution:
fix error 3948
我們要啟用或禁用本地數據加載功能(load data local ),
SHOW VARIABLES LIKE ‘locla_infile’; — — 找出local_infile的變數,value=off
SET local_infile=1; — — 改為value =on
fix error 2068
結束上面步驟會出現error 2068,登出再登入mysql時要指定參數,即可修正問題。
mysql -u -p --local-infile
接者回到源頭,重新匯入一次檔案吧!!
錯誤版:找不到檔案位置
在windows 位置是 c:/to-do.csv
輸入要用反斜線
輸入要小心檔案位置
正確版:
確認一下檔案!!成功!!
完成前三步驟了!!確實不容易呀~第一次碰到mysql,出現好多問題,剩下後面的工程再慢慢達成啦
參考資料:
https://dev.mysql.com/doc/refman/8.0/en/load-data-local-security.html