「公保與勞保資料匯入」修訂間的差異
跳至導覽
跳至搜尋
| 行 64: | 行 64: | ||
#*#抄校名相同者10所國立非大學「UPDATE 2025公保校名 a left join 2025學校代碼 b on a.原始校名=b.學校名稱 set a.schoolCode=b.schoolCode where a.schoolCode='' && b.schoolCode is not null」 | #*#抄校名相同者10所國立非大學「UPDATE 2025公保校名 a left join 2025學校代碼 b on a.原始校名=b.學校名稱 set a.schoolCode=b.schoolCode where a.schoolCode='' && b.schoolCode is not null」 | ||
#*#抄 102 所縣市立高中,如「新北市立泰山高級中學」,「UPDATE 2025公保校名 a left join 2025學校代碼 b on a.原始校名=concat(LEFT(concat(SUBSTRING(縣市名稱,5,2),學校名稱),CHAR_LENGTH(concat(SUBSTRING(縣市名稱,5,2),學校名稱))-1),'級中學') set a.schoolCode=b.schoolCode where b.學校名稱 like '%高中%'」 | #*#抄 102 所縣市立高中,如「新北市立泰山高級中學」,「UPDATE 2025公保校名 a left join 2025學校代碼 b on a.原始校名=concat(LEFT(concat(SUBSTRING(縣市名稱,5,2),學校名稱),CHAR_LENGTH(concat(SUBSTRING(縣市名稱,5,2),學校名稱))-1),'級中學') set a.schoolCode=b.schoolCode where b.學校名稱 like '%高中%'」 | ||
| − | #*# | + | #*#抄國立高中「UPDATE 2025公保校名 a left join 2025學校代碼 b on a.原始校名=concat(LEFT(學校名稱,CHAR_LENGTH(學校名稱)-1),'級中學') set a.schoolCode=b.schoolCode where b.學校名稱 like '%高中' && b.學校名稱 like '國立%' && a.schoolCode='' && b.schoolCode is not null」 |
| − | # 填 勞保校名 的 scode | + | # 填 勞保校名 的 scode |
| + | #*從過往的檔案抄「update 2025勞保校名 a left join 2025postSchool b on a.原始校名=b.schoolName SET a.schoolCode=b.schoolCode where b.schoolName is not null」 | ||
| + | #*從教育部編碼抄 | ||
| + | #*#抄國立高中「UPDATE 2025勞保校名 a left join 2025學校代碼 b on a.原始校名=concat(LEFT(學校名稱,CHAR_LENGTH(學校名稱)-1),'級中學') set a.schoolCode=b.schoolCode where b.學校名稱 like '%高中' && b.學校名稱 like '國立%' && a.schoolCode='' && b.schoolCode is not null」 | ||
# 請恩濡用人工去補 2025公保校名 中 schoolCode 為空白的學校之 schoolCode | # 請恩濡用人工去補 2025公保校名 中 schoolCode 為空白的學校之 schoolCode | ||
# 找可回收再用的頁「SELECT page_id,page_namespace,page_title,page_len FROM wiki_page WHERE page_namespace!=6 AND page_namespace!=14 ORDER BY page_len LIMIT 50」 | # 找可回收再用的頁「SELECT page_id,page_namespace,page_title,page_len FROM wiki_page WHERE page_namespace!=6 AND page_namespace!=14 ORDER BY page_len LIMIT 50」 | ||
於 2026年5月9日 (六) 15:01 的修訂
CSV 資料製備
DS720+ 的 adminer 的讀檔測試
- SHOW VARIABLES LIKE 'secure_file_priv';
- 若為情況一:secure_file_priv = NULL 代表 完全禁止 LOAD DATA INFILE
- 若為情況二:secure_file_priv = /var/lib/mysql-files/ 代表 只能從這個目錄讀檔
- 結果是情況三:secure_file_priv = (空白) 代表 任何目錄都可以讀,只要權限允許
- /tmp 的權限表是「drwxrwxrwt」,/var/tmp 的權限表是「drwxrwxrwx」,任何人都可以觸及與建檔。最後的字母「t」代表 sticky bit(黏著位),即使目錄對所有人都有寫入權限,也不能隨便刪除別人的檔案。只有以下三種情況可以刪除檔案:
- 檔案擁有者
- 目錄擁有者
- root
- 其他使用者即使有 w 權限,也不能刪除。
- 將 CSV 檔移到 /tmp 之下,任何 OS 帳號均可進入,但不代表這個 CSV 檔 mysql 可以讀取,要再檢查 CSV 檔的權限表。
- 如果 CSV 檔可以讀取, adminer 就可以成功執行
LOAD DATA INFILE '/tmp/某.csv' INTO TABLE 某表 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (欄名,…);
用 mysqlimport 資料匯入 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 指令匯入
- PuTTY 登入 NAS
- 用 mysql client
- 執行 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 (`保險證號`,`投保單位名稱`,`保費年月(西元年)`,`投保薪資`,`職災投保薪資`,`行業細類`);
諸 SQL 指令
- 取公保校名:「select DISTINCT 學校名稱 from 2025公保資料;」
- 匯入公保校名得 3,520 校
- 取勞保校名:「select DISTINCT 投保單位名稱 from 2025勞保資料;」
- create table create table 2025勞保校名 like 2025公保校名
- 匯入勞保校名得 3,927 校
- 找丟失的公保校名:「SELECT a.原始校名 from 2025公保校名 a left join 2025勞保校名 b using(原始校名) where b.原始校名 is null」得 416 校
- 新公保對照舊postSchool「SELECT a.原始校名 from 2025公保校名 a left join 2025postSchool b on a.原始校名=b.schoolName where b.schoolName is null」得 271 校
- 填 公保校名 的 scode
- 從過往的檔案抄「update 2025公保校名 a left join 2025postSchool b on a.原始校名=b.schoolName SET a.schoolCode=b.schoolCode where b.schoolName is not null」
- 從教育部編碼抄
- 抄校名相同者10所國立非大學「UPDATE 2025公保校名 a left join 2025學校代碼 b on a.原始校名=b.學校名稱 set a.schoolCode=b.schoolCode where a.schoolCode= && b.schoolCode is not null」
- 抄 102 所縣市立高中,如「新北市立泰山高級中學」,「UPDATE 2025公保校名 a left join 2025學校代碼 b on a.原始校名=concat(LEFT(concat(SUBSTRING(縣市名稱,5,2),學校名稱),CHAR_LENGTH(concat(SUBSTRING(縣市名稱,5,2),學校名稱))-1),'級中學') set a.schoolCode=b.schoolCode where b.學校名稱 like '%高中%'」
- 抄國立高中「UPDATE 2025公保校名 a left join 2025學校代碼 b on a.原始校名=concat(LEFT(學校名稱,CHAR_LENGTH(學校名稱)-1),'級中學') set a.schoolCode=b.schoolCode where b.學校名稱 like '%高中' && b.學校名稱 like '國立%' && a.schoolCode= && b.schoolCode is not null」
- 填 勞保校名 的 scode
- 從過往的檔案抄「update 2025勞保校名 a left join 2025postSchool b on a.原始校名=b.schoolName SET a.schoolCode=b.schoolCode where b.schoolName is not null」
- 從教育部編碼抄
- 抄國立高中「UPDATE 2025勞保校名 a left join 2025學校代碼 b on a.原始校名=concat(LEFT(學校名稱,CHAR_LENGTH(學校名稱)-1),'級中學') set a.schoolCode=b.schoolCode where b.學校名稱 like '%高中' && b.學校名稱 like '國立%' && a.schoolCode= && b.schoolCode is not null」
- 請恩濡用人工去補 2025公保校名 中 schoolCode 為空白的學校之 schoolCode
- 找可回收再用的頁「SELECT page_id,page_namespace,page_title,page_len FROM wiki_page WHERE page_namespace!=6 AND page_namespace!=14 ORDER BY page_len LIMIT 50」
待批次處理:
- 台→臺(資料表上沒有「台北市」這種簡寫)
- 當前的資料表沒有「私立」學校
- 資料表上沒有「國立」開頭的學校
- 特殊字或特殊符號,沒被偵測到?(例:苗栗縣通霄鎮明國民小學→啟明;桃園市大園區林國民小學→菓林)
停辦 / 改制:
⽤2025的學校代碼對照之前的資料表(2025postSchool),看看有哪些沒有在2025教育部的學校代碼上並找出原因
- 084703 南投縣⽴港源國⼩ => 停辦(2024
- 134664 屏東縣⽴僑智國⼩ => 停辦(2024
- 134607 屏東縣⽴凌雲國⼩ => 停辦(2024
- 134638 屏東縣⽴舊寮國⼩ => 停辦(2024
- 054695 苗栗縣⽴武榮國⼩ => 停辦(2023
- 054648 苗栗縣⽴僑⽂國⼩ => 停辦(2025
- 034631 桃園市⽴後厝國⼩ => 停辦(2024
- 034625 桃園市⽴圳頭國⼩ => 停辦(2024
- 034632 桃園市⽴沙崙國⼩ => 停辦(2024
- 034635 桃園市⼒陳康國⼩ => 停辦(2024
- 124723 ⾼雄市⽴⻄⾨國⼩ => 停辦(2023
- 124724 ⾼雄市⽴景義國⼩ => 停辦(2023
- 124710 ⾼雄市⽴新威國⼩ => 停辦(2025
- 124727 ⾼雄市麗寶⿓國⼩ => 停辦(2023
- 124715 ⾼雄市⽴集來國⼩ => 停辦(2024
- 094710 雲林縣⽴育英國⼩ => 改制為分校(2025
- 104724 嘉義縣⽴太和國⼩ => 改制為分校
- 104696 嘉義縣⽴⼤湖國⼩ => 改制為分校(2025
- 074752 彰化縣⽴潭墘國⼩ => 停辦(2023
- 074755 彰化縣⽴⺠靖國⼩ => 改制為分校(2025
- 114688 台南市⽴⿓⼭國⼩ => 改制為分校(2025
- 114703 台南市⽴雙春國⼩ => 停辦(2025
- 114544 台南市⽴沙崙國中 => 改制成沙崙國際⾼中(code有換 2025
- 114642 台南市⽴⽟⼭國⼩ => 停辦(2025
- 114641 台南市⽴⻄埔國⼩ => 停辦(2025
- 114730 台南市⽴新橋國⼩ => 停辦(2025
- 164505 澎湖縣⽴志清國中 => 停辦(2025
- 164506 澎湖縣⽴鎮海國中 => 停辦(2024
- 164631 澎湖縣⽴⽵灣國⼩ => 停辦(2024
- 164612 澎湖縣⽴虎井國⼩ => 停辦(2024