PbIdea 如何导入医保大文件

22 篇文章 12 订阅
7 篇文章 14 订阅

PbIdea 如何导入医保大文件

国家医保项目以zip格式提供药品、材料库下载,zip文件里面是一个文本文件,文本文件是utf8编码,解压出来有好几百M。这个文件对PB来说,比较难处理。PbIdea有专门功能来处理这个文件。

首先使用 uo_httpclient或uo_curl对象,根据医保接口文档将zip文件下载,存为文件。假设文件存为d:\ 202202187369608330634159091.zip。接下来介绍如何把这个压缩包里的数据导入数据库。

第一步:解析数据文件,把它分解成若干个小json文件。

分解成小块的json数据文件的好处是不过份占用内存,可以快速处理完每一个数据导入。

uo_yibao yb; yb = create uo_yibao

uo_json jsYB;jsYB = create uo_json

yb.ImportYiBaoZip("d:\ 202202187369608330634159091.zip",jsYB)

创建yb和json对象,然后调用函数ImportYiBaoZip。ImportYiBaoZip函数的参数可以是zip文件,不需要先解压。也可以是解压后的txt文件。

正常情况下,这个过程大概要10多秒钟。如果出错,自己察看jsYB的内容做相应处理。如果正确的话,jsYB内容大概是这样:

见下图:

“files”部分,是一个数组,包含了一个文件列表,可以循环取出来 ,用uo_json解析后,然后 dwImportJson导入DW。

“lines”部分,是检测到数据中哪些行数据可能有问题,需要人工纠正。这些行没有被解析到JSON里来。

“message”部分,提示信息,如果出错,这里是错误提示。

“result”部分,本次总共成功解析了多少行。

第二步:将解析分割出来的每一个JSON导入DW。

JSON文件格式是数组,每一行从数据文件解析出来的分字段数据。Iine是在数据文件中的行数,f1-fn是字段名,各自根据业务定义。

string ls_file

int i

i = 0

do while true

  if jsYB.Get("/files/" + string(i) + "/file",ref ls_file) then

       dw_1.dataobject = "" //这里可以是你自己定义的DW,也可以置为空,uo_json会动态创建一个适合的DW

       jsData = create uo_json

       if jsData.parseFile(ls_file) then

          if jsData.dwImportJson(dw_1) then

          //这里用你自己的方式更新到数据库

       end if

       end if       

       destroy jsData

  else

       exit //循环取完所有列表中的文件

  end if

  i++

loop

通过以上代码,循环将所有JSON文件导入DW。

以300多M的TXT文件(ZIP文件大大概60M左右)来说,预计20-30秒能全部导入到DW。至于多少时间能导入数据库,那看各自业务实现功能了。

当然,数据导入结束后,可以自己再通过循环,取出每一个文件名,并删除之。

                  大自在  QQ781770213

                   2022/4/14

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值