我们有一个基于AcuCobol和视觉文件的系统。
我们需要将整个数据文件转储到基于txt的文件中,然后再导入到sql服务器中。
我们现在使用vutil来转储数据,但它创建的是一个固定宽度的文件,我们希望它是某种分隔文件。我们现在使用的命令是:
vutil -unload -t源文件目标文件
现在,有没有人对此有任何经验,如果有,最好的实用程序是什么?
发布于 2011-09-01 02:11:42
为了完成这项工作,我要做的是:
将包含JCL的表卸载到一个文件中。在批处理中使用此文件,并使用与表的描述匹配的副本:(例如:如果您的表有3列ID、NAME和ADDRESS,则使用以下命令创建副本CC-1:
O1 CC-1
05 ID PIC X (16).
05 NAME PIC X (35).
05 ADDRESS PIC X (35).对于每行,将该行移动到副本CC-1中。
创建第二个副本CC-2
O1 CC-2
05 ID PIC X (16).
05 FILLER PIC X VALUE ';'.
05 NAME PIC X (35).
05 FILLER PIC X VALUE ';'.
05 ADDRESS PIC X (35).
05 FILLER PIC X VALUE ';'.在输出中执行CC-1到CC-2写入对应的移动。这是针对每一行的。您将在输出中获得所有数据的CSV文件。
您可以重用批处理和JCL,您只需更改记录的大小和副本的描述,以匹配您要卸载的表。
轻松自如。:)
发布于 2011-08-31 00:46:25
谷歌是你的朋友..。我做了一个快速搜索,并提出了NextForm,它声称可以将Vision转换为CSV (和其他格式)。
从“小字”上看,你似乎可以下载一个试用版,但要获得一个许可版本,你必须支付大约400.00美元(这不会丢弃随机记录)。
我完全没有使用这个产品的经验,所以我不能告诉你它是否真的起作用了。
编辑
有时,与遗留系统合作比对抗遗留系统更有效率。
你看过AcuODBC吗?这使Windows程序可以读取/导入Vision文件。您可以使用它从任何支持Windows ODBC的应用程序访问Vision文件。我相信你可能需要编译一本数据字典来完成这项工作,但它可以在你所处的位置和你想要的位置之间架起一座桥梁。
另一种方法可能是用AcuCobol编写您自己的转储程序。读取一条记录,格式化并写入它。如果文件没有复杂的结构,编写这种复杂的Cobol程序应该不是一项太有挑战性的任务。同一文件中的多个记录类型/布局,或单个记录中的重复字段)。
如果需要将单个Vision文件后处理到多个SQL Server表中,则您的任务将更加复杂。不幸的是,复杂的转换在Cobol遗留系统中非常常见,因为它们倾向于使用丰富/复杂/非规范化的文件结构(与SQL不同,SQL最适合处理规范化的表格数据)。
如果Vision文件比单个SQL Server表更复杂,那么也许可以考虑使用AcuXML Interface将文件转储到XML中,然后使用XSLT处理器创建CSV或从中需要的任何其他格式。这将允许您处理相当复杂的Cobol记录结构。同样,这种方法意味着编写一些相当基本的AcuCOBOL字体终端程序。
根据你对我最初帖子的评论,你不是一个死硬的Cobol程序员。也许在进一步推动这一点之前,与你的商店中对语言和环境有一定工作知识的人合作会是一个好主意。我有一种感觉,这个任务会比“转储和加载”更复杂一些。
发布于 2019-10-11 15:58:53
如果您在Tools菜单下有一个Vision File Utility选项,您可以将Vision数据卸载到以制表符分隔的文本文件中。
在那里,您可以将Excel作为制表符分隔的文件导入,然后重新保存为csv文件。
https://stackoverflow.com/questions/7246290
复制相似问题