檢視 公保與勞保資料匯入 的原始碼
←
公保與勞保資料匯入
跳至導覽
跳至搜尋
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這個群組的使用者能使用:
使用者
您可以檢視並複製此頁面的原始碼。
[[分類:重建教育經費保障/研究]] ===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 指令匯入=== # 取公保校名:「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」 # 填 勞保校名 的 scode 「update 2025勞保校名 a left join 2025postSchool b on a.原始校名=b.schoolName SET a.schoolCode=b.schoolCode where b.schoolName 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」
返回「
公保與勞保資料匯入
」頁面
導覽選單
個人工具
登入
命名空間
頁面
討論
變體
視圖
閱讀
檢視原始碼
檢視歷史
更多
搜尋
導覽
首頁
近期變更
隨機頁面
有關 MediaWiki 的說明
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊