0

我有很大的问题:

我有很多 .dbf 文件(~50000),我需要将它们导入 Oracle 数据库。我这样打开连接:

     OleDbConnection oConn = new OleDbConnection();
  OleDbCommand oCmd = new OleDbCommand();
  oConn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + directory + ";Extended Properties=dBASE IV;User ID=Admin;Password=";
            oCmd.Connection = oConn;
            oCmd.CommandText = @"SELECT * FROM " + tablename;
        try
            {
                oConn.Open();
                resultTable.Load(oCmd.ExecuteReader());
            }
            catch (Exception ex)
            {
                 MessageBox.Show(ex.Message);
              }
oConn.Close();
oCmd.Dispose();
oConn.Dispose();

我循环阅读它们,然后插入到oracle中。一切安好。但是:大约有 1000 个文件,我无法打开。他们提出异常“不是表格”。所以我谷歌,并安装 Borland 数据库引擎。现在一切都很好......但没有。

现在,当我读取文件时,1024 文件异常引发:“系统资源超出”。但是我有很多免费资源。当我删除 BDE 时,一切又恢复正常,没有“超出系统资源”错误,但我无法读取所有文件。

请帮忙。

PS:尝试使用 ODBC 但没有任何变化。

4

4 回答 4

1

我注意到您正在使用 Jet oledb 提供程序连接到您的 dbf 文件,我不确定这是否会解决您的问题,但是我认为您可以使用Visual FoxPro 的 oledb 提供程序连接到 dbf 文件。

于 2009-09-16T12:04:21.403 回答
0

我有一个 Python 模块,它可以从大多数 DBF 文件中提取数据,包括 DBF7,其结构有些不同。它不需要驱动程序、OleDb 或 ODBC——它只是读取文件。它非常仔细地检查输入文件,如果不满意,它会给出比“不是表格”更详细的消息。您能否提供一些示例文件以供检查?

于 2009-09-22T02:15:36.183 回答
0

各种风格的 DBF(dBASE、Clipper、FoxPro)都是相似的,但有一个明显的例外:DBF7,它是随 Visual dBASE 7 引入的,由 BDE 提供支持。DBF Viewer 2000 声称支持 DB7,可能是原生支持,因为格式仍然没有那么复杂。也许您可以查看一些文件属性/信息以确认所有“非表”DBF 都是 DBF7。

即使这最终确定了问题的本质,我也没有看到一个特别直接的解决方案。如果这是一次性交易,也许您可​​以运行循环,保存在没有安装 BDE 的情况下无法工作的“1000”文件的名称,然后使用 BDE 进行第二次传递。(如果超过 1024,则需要第三遍。)

于 2009-09-18T07:43:18.797 回答
0

我在使用 DBF 文件时遇到了类似的问题,有时我会收到“超出系统资源”的消息。

对我来说,解决方案是围绕 BDE(标准 Delphi TQuery 调用)创建一个 Delphi DLL 包装器,并使用 Interop 从 C# 调用这个 DLL。

于 2011-08-31T10:56:20.663 回答