PB6.5使用ole匯入10000條記錄時報out of memory錯誤(記憶體一直在耗,但沒有耗完),查了很多人遇到過,但沒有實際的解決辦法
哪位大俠知道幫下,急著交任務。
PC配置:WIN7/4G記憶體
uj5u.com熱心網友回復:
資料源是什么?uj5u.com熱心網友回復:
就一個excel檔案,1000行,3列。由于資料視窗有5個欄位,另外兩個是通程序式自動設定的默認值,所以沒有使用DW自帶的函式。是一個個格子讀出來處理的。
uj5u.com熱心網友回復:
錯了,是一萬行,分批匯入也不行,記憶體一直在耗,大概耗了30M左右就Out Of Memory了,有沒有辦法在分批匯入的時候能夠釋放掉記憶體后重新導啊[09:55:47][superadm]ll_usedRow:10001,ll_usedCol:3
[09:55:47][superadm]開始檢查匯入的Excel檔案的合法性
[09:55:58][superadm]檢查匯入檔案資料的合法性成功:1000
[09:55:58][superadm]ll_usedRow:10001,ll_usedCol:3
[09:55:58][superadm]開始檢查匯入的Excel檔案的合法性
[09:56:09][superadm]檢查匯入檔案資料的合法性成功:2000
[09:56:10][superadm]ll_usedRow:10001,ll_usedCol:3
[09:56:10][superadm]開始檢查匯入的Excel檔案的合法性
[09:56:22][superadm]檢查匯入檔案資料的合法性成功:3000
[09:56:23][superadm]ll_usedRow:10001,ll_usedCol:3
[09:56:23][superadm]開始檢查匯入的Excel檔案的合法性
[09:56:36][superadm]檢查匯入檔案資料的合法性成功:4000
[09:56:37][superadm]ll_usedRow:10001,ll_usedCol:3
[09:56:37][superadm]開始檢查匯入的Excel檔案的合法性
[09:56:50][superadm]檢查匯入檔案資料的合法性成功:5000
[09:56:50][superadm]ll_usedRow:10001,ll_usedCol:3
[09:56:50][superadm]開始檢查匯入的Excel檔案的合法性
[09:57:03][superadm]檢查匯入檔案資料的合法性成功:6000
[09:57:03][superadm]ll_usedRow:10001,ll_usedCol:3
[09:57:04][superadm]開始檢查匯入的Excel檔案的合法性
[09:57:20][superadm]檢查匯入檔案資料的合法性成功:7000
[09:57:20][superadm]ll_usedRow:10001,ll_usedCol:3
[09:57:20][superadm]開始檢查匯入的Excel檔案的合法性
uj5u.com熱心網友回復:
不要這么處理,太慢了,可以全選,然后復制到剪切板上,然后用dw_1.ImportClipboard(),可以直接把所有資料導進去,這樣應該就不會出錯了
uj5u.com熱心網友回復:
用dwcontrol.ImportFile 不行嗎?uj5u.com熱心網友回復:
gs_tran ls_tranGetFileOpenName("Select File", FilePath, FileName, '*.*',"EXCEL檔案 (*.XLS;*.XLSX) ,*.XLS;*.XLSX",GetCurrentDirectory ( ), 18)
ls_tran = Create gs_tran
ls_tran.DBMS = "OLE DB "
ls_tran.AutoCommit = False
ls_tran.DBParm = "PROVIDER= 'Microsoft.ACE.OLEDB.12.0',DATASOURCE= '" + filepath + "',PROVIDERSTRING= 'Excel 12.0';HDR=YES;IMEX=1;MAXSCANROWS=1280;"
connect using ls_tran;
ls_error = ls_tran.sqlerrtext
ls_sql = 'select * from [sheet1$]'
ls_syntax = ls_tran.syntaxfromsql(ls_sql,'',ls_error)
dw_temp.Create(ls_syntax)
dw_temp.settrans(ls_tran)
ll_row = dw_temp.retrieve( )
disconnect using ls_tran;
destroy ls_tran
試下這個,先創建dw,再從里邊讀
uj5u.com熱心網友回復:
使用這個函式能夠匯入,但檔案中超過DW欄位長度會提示:“item validation error on IMPORT.continue IMPOR”,為了避免這個問題才讀一行判斷資料合法性
uj5u.com熱心網友回復:
就一個excel檔案,1000行,3列。由于資料視窗有5個欄位,另外兩個是通程序式自動設定的默認值,
所以沒有使用DW自帶的函式。是一個個格子讀出來處理的。
不要這么處理,太慢了,可以全選,然后復制到剪切板上,然后用dw_1.ImportClipboard(),可以直接把所有資料導進去,這樣應該就不會出錯了
使用這個函式能夠匯入,但檔案中超過DW欄位長度會提示:“item validation error on IMPORT.continue IMPOR”,為了避免這個問題才讀一行判斷資料合法性
你把資料視窗里的欄位長度調整長些(可以通過editsource里修改一個長度),每個欄位弄個2000,匯入后再檢驗一下,如果沒問題,再保存就行了
uj5u.com熱心網友回復:
先做一個外部資料源的dw,格式和excel一樣,然后importfile到這個dw,然后就想怎么樣就怎么樣了轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/49771.html
標籤:DataWindow
上一篇:資料保存出錯
