1. 程式人生 > >Oracle sqlldr匯入以回車和回車換行字元結尾的文字

Oracle sqlldr匯入以回車和回車換行字元結尾的文字

在一個大文字中(超過1.5G),當有同時存在回車換行以及回車字元結尾時,如果換行結尾的量大於sqlldr預設緩衝1048576時候,會報錯。

SQL*Loader-510: 資料檔案 (XXX.txt) 中物理記錄超過最大限制 (1048576)

SQL*Loader-2026: 載入因 SQL 載入程式無法繼續而被終止。

網上搜很久,解決方法


修改 readsize — 讀取緩衝區的大小 (預設 1048576) 修改為 20971520

但是還是報錯

SQL*Loader-510: 資料檔案 (XXX.txt) 中物理記錄超過最大限制 (20971520)

SQL*Loader-2026: 載入因 SQL 載入程式無法繼續而被終止。

這邊簡單分析下原因,sqlldr載入到我這邊txt文字中第一行以回車換行符結尾,就預設所有行都以回車換行符結尾了,當載入到以換行符結尾的文字區域時由於換行結尾的行數過大,緩衝區無法裝載而報錯。

解決方法:

INFILE "xxx.txt" "str X'0A'"

0A代表換行符,即將換行符一起裝載,相當於定義新行結尾符號。