2016-08-02 131 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文件中。我釋放數組,然後下一部分被加載,直到整個表被寫入我的文件。

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

謝謝你的幫助!