2016-08-02 189 views
0

我们在Delphi XE上使用Interbase XE3(2013)。Interbase导出为CSV

我们需要将表格导出为CSV文件,因为它们被导入到MsAccess中用于进一步的控制目的。

对于导出,我们使用IBExpert的功能和/或通过我们自己的程序(通过cxGrid的TClientDataSet以CSV文件格式导出)。

问题: 不幸的是,导出是有限的,我们没有办法导出整个表格(在这种情况下,400k行,大约80列,并且每个月都在增加)。

我已阅读关于FBExport,但尚未测试,因为我不想冒我们的数据库的风险问题。有没有人测试过这个工具呢?

适合的解决方案(待找到): 我们需要一种将Interbase XE3中的整个表格导出为CSV文件的方式,而不受大小/列/行的限制(这就是为什么我认为CSV是要走的路没有开销)。此外,我更喜欢可以通过批处理文件执行的解决方案,而不需要计算机前面的人员。

亲切的问候

+0

请更具体一些,在编辑时,通过添加一个空白行来引入段落,使您的问题更具可读性。 – AlBlue

+1

为什么不使用ODBC或OLE-DB提供程序并使Access直接连接到Firebird/Interbase? –

+0

只需将您的数据库置于只读状态,'FBExport'或'FBCopy'或'FlameRobin'或任何其他工具将无法更改其中的数据。 –

回答

0

我已经成功地回答这个问题,多亏了亚略。

我有2个参数,“数据库的名称”和“要取的行”(+可选分隔符)。 我的程序决定了一个表中的行数(只是计数(ID)),并将其分为“需要读取的行”(因为我之前内存不足)

导出文件在开始时创建将我的ibcquery的列名作为第一行。也是最大。我的多维数组的宽度由表的columncount设置。长度是“要读取的行”。

语句就像“SELECT * FROM TABLENAME ROWS X TO Y”。 这是为表格的每个分割部分执行并写入我的数组。填充数组后,查询被关闭,数据被追加到我的CSV文件中。我释放数组,然后下一部分被加载,直到整个表被写入我的文件。

所以下一个限制就是文件大小,我想。

谢谢你的帮助!