请教PB8高手怎样导入真超过32K的CSV文本?
我已经实现导入文件,但文件超过32K多的部份就不能导入,请高手指点! 问题点数:50、回复次数:10Top
1 楼wangxichen() 喜之郎 : )回复于 2004-09-03 08:42:40 得分 10
原因是fileread行数一次最多只能读取32765字节长度的数据,
要做循环导入才行Top
2 楼wjmsino(从头再来)回复于 2004-09-03 08:45:47 得分 0
请问怎么样做循环呢,能给段代码吗?Top
3 楼wangxichen() 喜之郎 : )回复于 2004-09-03 08:45:52 得分 0
文件读取函数:
Integer li_FileNo, li_Reads, li_Cnt
Long ll_FileLen
Blob lblb_Data
ll_FileLen = FileLength(as_FileName)
li_FileNo = FileOpen(as_FileName, StreamMode!, Read!)
If li_FileNo < 0 Then Return -1
If ll_FileLen > 32765 Then
If Mod(ll_FileLen, 32765) = 0 Then
li_Reads = ll_FileLen / 32765
Else
li_Reads = (ll_FileLen / 32765) + 1
End if
Else
li_Reads = 1
End if
ablb_Data = lblb_Data
For li_Cnt = 1 to li_Reads
If FileRead(li_FileNo, lblb_Data) = -1 Then
Return -1
Else
ablb_Data = ablb_Data + lblb_Data
End if
Next
FileClose(li_FileNo)
Return ll_FileLen
参数设置:
1.as_filename string value
2.ablb_data blob referenceTop
4 楼benjaminz(RockDJ)回复于 2004-09-03 08:49:48 得分 10
用file族函数把目标文件拆成小于32k的临时文件然后导入,你可以自己算一下要多少行你的数据文件就大于32k,然后用fileread读出来再写回到几个小于32k的临时文件里Top
5 楼wjmsino(从头再来)回复于 2004-09-03 09:30:28 得分 0
wangxichen(喜之郎) :把文件读到blob变量后再怎么样ImportFile到数据窗口中呢?Top
6 楼renwanly(★★★★)回复于 2004-09-03 09:32:50 得分 5
喜报:pb9最新的patch里面不用考虑读取文件大小的限制了!
直接一个fileread()就可以了,不知道pb8最新的patch里面有没有解决:DTop
7 楼wangxichen() 喜之郎 : )回复于 2004-09-03 09:34:05 得分 20
不要弄到数据窗中了,数据窗中可以不加入这个字段,在数据窗口保存后,
再用updateblob语句将这个二进制数据直接保存到数据库对应的字段中Top
8 楼wjmsino(从头再来)回复于 2004-09-03 09:55:17 得分 0
我的文件里包含了很多字段,要分开的,还有什么方法吗?
看来只能分成N个临时文件了,
谁有怎么分的代码,参考一下Top
9 楼qianfl(毛毛熊)回复于 2004-09-03 10:23:57 得分 5
你用行方式打开文件,一行一行读就不会超过32K了吧,读出一行后根据分隔符来拆分Top
10 楼wjmsino(从头再来)回复于 2004-09-03 12:03:09 得分 0
毛毛熊:有代码吗,贴段给我学习Top




