「公保與勞保資料匯入」修訂間的差異
跳至導覽
跳至搜尋
| 行 21: | 行 21: | ||
===用 mysqlimport 資料匯入 CSV=== | ===用 mysqlimport 資料匯入 CSV=== | ||
用 mysqlimport 匯入 csv,會更快,但是 mysqlimp 會把檔名當作資料表名。 | 用 mysqlimport 匯入 csv,會更快,但是 mysqlimp 會把檔名當作資料表名。 | ||
| − | <!-- ssh 帳號@192.168.4.4 --> | + | <!--限區網中操作 ssh 帳號@192.168.4.4 --> |
* 登入 DS720+ ,以「sudo -i」取得 root 的操作權限 | * 登入 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 中的密碼 | * 從 DS218+ 將 CSV 檔帶入 DS720+<pre>scp -rp adminNas@192.168.4.2:/volume1/Data/2025post/檔名.csv /tmp</pre> => 回答 adminNas 在 192.168.4.2 中的密碼 | ||
於 2026年3月31日 (二) 11:46 的最新修訂
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 (`保險證號`,`投保單位名稱`,`保費年月(西元年)`,`投保薪資`,`職災投保薪資`,`行業細類`);