路徑一:導出 INSERT SQL 文本
-- Oracle SQL*Plus
SPOOL test.sql
SET HEAD OFF PAGESIZE 0 RECSEP OFF WRAP OFF FEEDBACK OFF LINESIZE 200 TERMOUT OFF TRIMSPOOL ON
SELECT 'INSERT INTO test VALUES(' || id || ');' FROM test;
SPOOL OFF
-- MySQL 導入
mysql -u root test < test.sql
- 優點:簡單、可編輯。
- 缺點:大資料量極慢、單行錯誤難定位。
路徑二:固定格式文字 + LOAD DATA INFILE(推薦)
-- 導出製表符/自訂分隔符文字檔 (tt.txt)
-- MySQL 導入
mysql -e "LOAD DATA INFILE '/home/tt.txt' INTO TABLE test.tt FIELDS TERMINATED BY '\t'" test -u root
-- 或
mysql -u root test < <(echo "LOAD DATA INFILE '/home/tt.txt' INTO TABLE tt FIELDS TERMINATED BY '\t';")
- 優點:速度快 20 倍、流式處理記憶體友善。
- 關鍵:分隔符/轉義字元預處理正確(見 88390)。
路徑三:MySQL Migration Toolkit(不建議)
- 官方工具,僅 Windows。
- 實測:轉義字元、VARCHAR/CLOB 處理頻繁錯誤,**生產遷移不建議使用**。