将IBM DB2 IXF文件转换为CSV或XML

4
我该如何将导出的IXF文件(使用db2 export命令)转换成人类可读的格式,如CSV或XML?我可以使用Python或.NET C#来完成这项任务。

如果您提供一个.IXF文件样本供我们查看,我认为您获得正确答案的机会更大。 - jsbueno
4个回答

5

PC/IXF格式相当复杂,实际上只有DB2之外的程序几乎不了解它。编写自己的PC/IXF解析器来直接将IXF文件转换为其他格式可能需要一段时间。更快的替代方案是在DB2服务器上发出IMPORT命令,并指定CREATE INTO而不是INSERT INTO,这将生成一个全新的表,可以容纳导入文件的内容。这将允许您在新表上运行EXPORT命令以将行转储到分隔符格式。


4

嗨,我尝试使用这个潜在非常有价值的项目,但发现它无法运行。很多代码似乎不是用Python编写的(例如使用C约定编写的for循环)。最近对该项目进行了更改吗?或者有C版本吗? - Wiredchop
@Wiredchop,你有一个IXF文件的样本吗?我写了这个项目很久了,但是离开IBM后就没有再做过了。 - sapenov
很抱歉,我无法分享任何东西。即使导入主要库也会因语法问题而出错,我甚至无法做到这一点。我对Python并不是特别熟悉,我应该使用特定版本吗? - Wiredchop
稍作修改,现在没有错误了,但仍需要一个样本IXF文件来测试。 - sapenov
感谢您的工作,我们对代码进行了一些更改,以使其运行,但没有输出文件。我已将此作为 Github 上的问题(附有新代码的链接)。 - Wiredchop
谢谢,我会在周末看一下。 - sapenov

1
IXF是一种古老且有文档记录的文件格式。可以读取和处理它,我几年前就做过。所以不要灰心丧气。对于开发人员来说,它很难,但并不是太难。今天在GitHub上也可以找到解决方案,例如ixfcvt

0
你说你对Python很熟悉。所以,你可以试试这个:
pip install db2ixf

你可以使用命令行界面或者Python代码。
db2ixf csv -s '|'  <path/to/your/file.ixf>

- s:分隔符(默认为|
db2ixf parquet <path/to/your/file.ixf>

或者:

db2ixf json <path/to/your/file.ixf>

Python:
from pathlib import Path
from db2ixf import IXFParser

path = Path('path/to/IXF/file.XXX.IXF')
with open(path, mode='rb') as f:
    parser = IXFParser(f)
    output_path = Path('path/to/output/file.csv')
    with open(output_path, mode='w', encoding='utf-8') as output_file:
        parser.to_csv(output_file)

如果您需要更多的文件,您可以访问此链接

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接