檢視 公保與勞保資料匯入 的原始碼
←
公保與勞保資料匯入
跳至導覽
跳至搜尋
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這個群組的使用者能使用:
使用者
您可以檢視並複製此頁面的原始碼。
[[分類:重建教育經費保障/研究]] ===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 就可以成功執行<pre>LOAD DATA INFILE '/tmp/某.csv' INTO TABLE 某表 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (欄名,…);</pre> ===用 mysqlimport 資料匯入 CSV=== 用 mysqlimport 匯入 csv,會更快,但是 mysqlimp 會把檔名當作資料表名。 <!--限區網中操作 ssh 帳號@192.168.4.4 --> * 登入 DS720+ ,以「sudo -i」取得 root 的操作權限 * 從 DS218+ 將 CSV 檔帶入 DS720+<pre>scp -rp adminNas@192.168.4.2:/volume1/Data/2025post/檔名.csv /tmp</pre> => 回答 adminNas 在 192.168.4.2 中的密碼 * cp -a /tmp/檔名.csv /tmp/資料表名.csv * 以 <pre>/usr/local/mariadb10/bin/mysqlimport --local \ --fields-terminated-by=',' \ --lines-terminated-by='\r\n' \ --ignore-lines=1 \ -u 使用者名 -p 資料庫名 \ /tmp/資料表名.csv</pre> : => 回答使用者密碼 * 再來下一個 csv * 萬一出錯以「truncate table 表格名;」清空資料表。 ===登入 MySQL 後 用 SQL 指令匯入=== # PuTTY 登入 NAS # 用 mysql client # 執行 LOAD DATA LOCAL INFILE * 登入 MySQL:mysql -u wiki -p 資料庫名稱 * 使用 SQL 指令: <pre>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 (`保險證號`,`投保單位名稱`,`保費年月(西元年)`,`投保薪資`,`職災投保薪資`,`行業細類`);</pre> ===諸 SQL 指令=== :---------- 以 adminer 賦學校 schoolCode(簡稱 scode) ---------- # 取公保校名:「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」 #*#抄國立女中「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」 #*#抄國立女中「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」 #*從公保校名抄「UPDATE 2025勞保校名 a left join 2025公保校名 b using(原始校名) set a.schoolCode=b.schoolCode where 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」<br/>---------- 以 MySQL 腳本命令派 scode 給公保資料與勞保資料 ---------- # mysql -u root -p密碼 < /volume1/homes/adminNas/www/wiki.sql ====待批次處理:==== # 台→臺(資料表上沒有「台北市」這種簡寫) # 當前的資料表沒有「私立」學校 # 資料表上沒有「國立」開頭的學校 # 特殊字或特殊符號,沒被偵測到?(例:苗栗縣通霄鎮明國民小學→啟明;桃園市大園區林國民小學→菓林) ====停辦 / 改制:==== ⽤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
返回「
公保與勞保資料匯入
」頁面
導覽選單
個人工具
登入
命名空間
頁面
討論
變體
視圖
閱讀
檢視原始碼
檢視歷史
更多
搜尋
導覽
首頁
近期變更
隨機頁面
有關 MediaWiki 的說明
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊