公保與勞保資料匯入

出自跨校選修
於 2026年3月10日 (二) 17:35 由 丁志仁討論 | 貢獻 所做的修訂 →‎DS720+ 的 adminer 的讀檔測試
跳至導覽 跳至搜尋


CSV 資料製備

DS720+ 的 adminer 的讀檔測試

  • SHOW VARIABLES LIKE 'secure_file_priv';
    1. 若為情況一:secure_file_priv = NULL 代表 完全禁止 LOAD DATA INFILE
    2. 若為情況二:secure_file_priv = /var/lib/mysql-files/ 代表 只能從這個目錄讀檔
    3. 結果是情況三:secure_file_priv = (空白) 代表 任何目錄都可以讀,只要權限允許
  • 將 CSV 檔移到 /tmp 之下

CSV 資料匯入 MySQL

adminer 無法以 「load data local infile…」匯入 CSV 所以改用 mysqlimport 匯入 csv,但是 mysqlimp 會把檔名當作資料表名。

  • 登入 DS720+ ,以「sudo -i」取得 root 的操作權限
  • 從 DS218+ 將 CSV 檔帶入 DS720+
    scp -rp adminNas@192.168.4.2:/volume1/Data/2025post/檔名.csv /tmp
    => 回答 adminNas 在 192.168.4.2 中的密碼
  • cp -a /tmp/檔名.csv /tmp/資料表名.csv
/usr/local/mariadb10/bin/mysqlimport --local \
--fields-terminated-by=',' \
--lines-terminated-by='\r\n' \
--ignore-lines=1 \
-u 使用者名 -p 資料庫名 \
/tmp/資料表名.csv
=> 回答使用者密碼
  • 再來下一個 csv
  • 萬一出錯以「truncate table 表格名;」清空資料表。

登入 MySQL 後 用 SQL 指令匯入

  1. PuTTY 登入 NAS
  2. 用 mysql client
  3. 執行 LOAD DATA LOCAL INFILE
  • 登入 MySQL:mysql -u wiki -p 資料庫名稱
  • 使用 SQL 指令:
LOAD DATA LOCAL INFILE '/volume1/web/勞保局投保資料202506.csv'
INTO TABLE `2025勞保`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(`保險證號`,`投保單位名稱`,`保費年月(西元年)`,`投保薪資`,`職災投保薪資`,`行業細類`);