解析平面数据文件以进行读/写

时间:2018-09-19 23:15:05

标签: c# database parsing flat-file data-files

我需要连接到1998年以来的一些旧C-tree Plus数据库文件。该产品已被供应商停产,但今天仍在当前软件版本中使用。我需要能够读写,但是没有可用的ODBC连接类型,只能访问文件。这是其中的一个示例:

http://64.72.211.216/zip.dat

http://64.72.211.216/zip.idx

我需要的大部分内容都存储为整数或字符串,我可以使用基本的文本编辑器查看它,但是混合中还需要过滤二进制/ UTF / HEX字符。文件中没有列名。

我需要找到一种方法将其解析为可读形式,例如csv以进行读取,然后将其反转以进行写入。

所涉及的供应商根本无法提供帮助,说实话,我不确定他们公司中的任何人都知道,自设计20年后,它是如何工作的。我花了一个好小时试图说服Faircom员工在没有任何支持的情况下将我的旧ODBC卖给我,但没有成功。虽然某些文档仍然存在,但是无法利用ODBC库来使用该文档。

我曾尝试与Pervasive联系以获取有关其DataConnect的信息,但显然他们已淘汰了最新版本中对平面文件的解析。他们说,在旧版本中,它基于awk。

我发现Progress.com的DataDirect很有趣,但是还没有接到他们的电话以查看可能的结果。

TextPipe Pro看起来可能可以读取,但是我认为我不能用它编写。

Postgresql具有用于解析CSV的外部数据包装程序,我考虑过尝试根据CSV过滤器为我的数据创建一个过滤器,但不确定是否这是一个兔子洞。

我在C#方面有些能力,但是不知道从哪里开始。我的理解是,我需要定义一个代表一行的“块大小”,然后将每个固定宽度的列从现在的状态转换为ANSI。然后将每行导出为可以查询的csv格式。

请有人告诉我,有更好的方法。也许是解析库,实用程序,它可以完全集成到按计划运行以查找更新的C#应用​​程序中。

1 个答案:

答案 0 :(得分:0)

  • 哪个版本用于生成此idx / dat?是DOS /旧Windows版本吗?还是Unix / Mac?
  • 尝试获取此版本(完整的api /源代码附带)和合适的编译器
  • 如果您可以重新编译源代码,则可以在C#项目中添加一些标头包装器,然后使用C Dll(https://www.codeproject.com/Articles/9826/How-to-create-a-DLL-library-in-C-and-then-use-it-w
  • 我知道它很旧,但是随后您可以使用c-tree的C api读取/写入这些类型的文件(至少这意味着您需要使用一些旧的DOS / Windows编译器进行测试)
  • 它是分析格式的最完美起点 (请参阅此工具:https://www.awportals.com/aw/archives/newsgroups/thread_468/
  • 也许Faircom仍然使用旧版本-告诉他们您需要在无法替换的旧软件中找到错误,并且该库丢失了-不要告诉他们您要分析格式
  • 或者找到一个老经销商或互联网上的人们(google,reddit,stackoverflow)谈论c-tree并询问他们是否为您找到了“尝试从1988年找到C-Tree Plus Vx.y”的版本。在这些平台上的一个好问题
  • 总是在其他平台帖子之间重新链接