Infobright 社區版不支持 DML,僅支持 LOAD DATA 導入。源數據含控制字符(\x00-\x1F)導入頻繁報錯。
-- 設置拒絕文件路徑 SET @BH_REJECT_FILE_PATH = '/tmp/reject_file'; -- 容忍 10 行錯誤後中止 SET @BH_ABORT_ON_COUNT = 10; -- 永不中止(慎用) SET @BH_ABORT_ON_COUNT = -1; -- 或按比例容忍(3%) SET @BH_ABORT_ON_THRESHOLD = 0.03;
導入失敗行寫入拒絕文件,成功行正常入庫,事後分析拒絕文件修復補載。
SELECT fields_list INTO OUTFILE '/tmp/outfile.csv' FIELDS TERMINATED BY '||' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' FROM mytable;
TERMINATED BY '||':雙管道符作為列分隔,極低衝突概率ESCAPED BY '\\':指定反斜杠為轉義字符LINES TERMINATED BY '\r\n':標準 Windows 換行SELECT fields_list INTO OUTFILE '/tmp/outfile.csv' FIELDS TERMINATED BY '||' ESCAPED BY '\\' LINES TERMINATED BY '$$$$$\r\n' FROM mytable;
前提:業務數據中**絕對不存在** $$$$$\r\n 序列。
| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| 拒絕文件 | 零侵入源數據、自動記錄異常 | 數據不完整、需人工補載 | 少量髒數據、急需上線 |
| 特殊分隔符 | 數據完整、標準化 | 需控制導出端、分隔符需極罕見 | 常規導入、可控導出 |
| 自定義行分隔 | 極低衝突 | 需業務承諾無衝突序列 | 極髒數據、其他方案失效 |
FIELDS TERMINATED BY '\x1f' ESCAPED BY '\x1e' LINES TERMINATED BY '\x1d\n'(使用 ASCII 控制字符 \x1f=US, \x1e=RS, \x1d=GS,極不可能出現在業務文本)FIELDS TERMINATED BY '\x1f' ESCAPED BY '\x1e' LINES TERMINATED BY '\x1d\n'@BH_REJECT_FILE_PATH + @BH_ABORT_ON_THRESHOLD=0.01| 變量 | 說明 |
|---|---|
| @BH_REJECT_FILE_PATH | 拒絕文件路徑 |
| @BH_ABORT_ON_COUNT | 允許拒絕行數,-1=不限 |
| @BH_ABORT_ON_THRESHOLD | 允許拒絕比例 (0.01=1%) |
| @BH_FIXED_WIDTH | 固定寬度模式 |
| @BH_DATA_FORMAT | 數據格式:txt/csv |