我有很大的问题:
我有很多.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个文件,我打不开。他们会抛出异常“不是表格”。所以我在google上安装了Borland数据库引擎。现在一切都唤醒了fine....but no。
现在,当我读取文件时,在1024文件异常出现:“系统资源已超出”。但是我有很多免费的资源。当我删除BDE时,一切正常,没有“系统资源超出”的错误,但我不能读取所有文件。
请帮帮忙。
PS:尝试使用ODBC,但没有任何变化。
发布于 2009-09-16 12:04:21
我注意到您正在使用Jet oledb provider连接到您的dbf文件,我不确定这是否能解决您的问题,但我认为您可以使用an oledb provider for visual FoxPro连接到dbf文件。
发布于 2009-09-18 07:43:19
各种风格的DBF (dBASE、Clipper、FoxPro)都很相似,但有一个值得注意的例外: DBF7,它是在Visual dBASE 7中引入的,由BDE提供支持。DBF Viewer2000声称支持DB7,可能是本机支持,因为格式仍然不是那么复杂。也许您可以查看一些文件属性/信息,以确认所有“不是表”的DBF都是DBF7。
即使这最终定义了问题的性质,我也看不到特别简单的解决方案。如果这是一次交易,也许你可以运行循环,保存没有安装BDE就不能工作的"1000“文件的名称,然后使用BDE进行第二次遍历。(如果大于1024,则需要第三次通过。)
发布于 2009-09-22 02:15:36
我有一个Python模块,可以从大多数DBF文件中提取数据,包括DBF7,它的结构略有不同。它不需要驱动程序、OleDb或ODBC --它只读取文件。它非常仔细地检查输入文件,如果不满意,它会给出比“不是表格”更详细的消息。你能提供几个样本文件以供检查吗?
https://stackoverflow.com/questions/1432509
复制相似问题