本文共 702 字,大约阅读时间需要 2 分钟。
在大规模进行数据导入时,最好能够使用PB中数据窗口自带的导入,那样的数据效率是比较高的,但是,对于非正规数据的导入就比较麻烦一点,因为数据窗口的导入是必须指定格式的,在这里,我也碰到了这样一个问题
由于在一个开发过程中,每天大约需要导入一千万条左右的数据,而且数据是保存在文本文件中,数据的格式基本上不固定,需要人为判断。
首先我采用FileReadEX这个程序将数据读入到Blob变量中,然后再用BlobMid进行数据剪裁,(这里说明一下,因为pb的String对于中文字符是使用一个长度进行判断的,有时操作不太方便,所以我使用了blob)。经过调试后发现,当文件越大,分析的速度就越慢,比如分析一万条可能需要五秒钟时间,但是如果分析两万条是可能就需要20秒,三万条是可能需要将近一分钟。这说明blobMid函数在对blob进行取数时与blob本身的长度关系很大,不是直接采用计算地址的方式做的。
现在进行一定的改进,
第一种方法:通过fileread进行读取,这样每次读取的长度不能超过32765字节,这样会有一个问题,有可能一条数据会在两次读取中,这样就需要进行一些判断。
第二种方法:仍然通过FileReadEX来进行读取,再生成一个Blob的变量用于每次取出定长的数据进行分析。
经过测试这样的效率能够提高相当多,而且性能稳定。
现在有一个疑问是:
我个人认为,如果每次通过FileRead来读取,就会频繁与外村进行关联,速度应该是比较慢的,而用FileReadEx进行读取,文件已经到内存中,应该会更快。但是事实却非如此,不知道是我程序开发的没有找到一个优化的缓存变量大小的原因还是其他原因。
转载地址:http://mwwni.baihongyu.com/