有没有什么好的库可以用java或任何其他语言读/写DBF文件?
我目前正在使用OleDBCommand.ExecuteNonQuery(重复调用)一次从源DataTable向dbase文件(*.dbf)中插入多达350,000行.我正在重用OleDbCommand对象和OleDbParameters来设置每次调用insert语句时要插入的值.插入350,000行目前占用我的程序约45分钟.
有没有更有效的方法来做到这一点?是否存在与Dbase(*.dbf)文件中的SQL Server中使用的批量插入选项类似的内容?
我有一个相当大的 DBF 文件,大约 40 兆,我需要能够查询它。现在我正在读取 DBF(它只是表格文本)到 h2 数据库中并查询 h2 数据库。这可行,但看起来……很愚蠢。我一直在寻找 DBF 的 4 类 JDBC 驱动程序,但没有找到任何运气。执行此操作的正确方法是什么?
我有一个DBF文件,正在尝试从C#代码读取它。我可以成功读取文件而无需对varchar类型字段应用任何条件或条件。我的问题是我必须从Date字段(类型:date)中过滤记录。我尝试过以下方法
SELECT * FROM D:\DBFreader\file.dbf where [RDATE] between 2/16/2006 12:00:00 AM and 2/20/2006 12:00:00 AM
Run Code Online (Sandbox Code Playgroud)
上面给出了语法错误:缺少运算符
SELECT * FROM D:\DBFreader\file.dbf where [RDATE] between '2/16/2006 12:00:00 AM' and '2/20/2006 12:00:00 AM'
Run Code Online (Sandbox Code Playgroud)
上面给出了数据类型不匹配错误
SELECT * FROM D:\DBFreader\file.dbf where [RDATE] between 2/16/2006 and 2/20/2006
Run Code Online (Sandbox Code Playgroud)
上面的方法不会引发任何异常,但是尽管有匹配的记录,但不会返回任何记录。
where子句也发生相同的情况。我该怎么做才能过滤范围内的记录
我正在使用以下代码阅读
OdbcCommand cmd = new OdbcCommand();
OdbcDataAdapter da = new OdbcDataAdapter();
DataTable dt = new DataTable();
using (OdbcConnection connection = new OdbcConnection(connstring))
{
connection.Open();
cmd = new OdbcCommand(@"SELECT * FROM D:\DBFreader\file.dbf where [RDATE] between 2/16/2006 12:00:00 AM …Run Code Online (Sandbox Code Playgroud) 在一个项目中,我需要从Visual FoxPro数据库中提取数据,该数据库存储在dbf文件中,我有一个数据目录,需要考虑539个文件,每个文件代表一个数据库表,所以我一直在做一些测试和我的代码是这样的:
import pyodbc
connection = pyodbc.connect("Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=P:\\Data;Exclusive=No;Collate=Machine;NULL=No;DELETED=Yes")
tables = connection.cursor().tables()
for _ in tables:
print _
Run Code Online (Sandbox Code Playgroud)
这打印只有15个表,没有明显的模式,总是相同的15个表,我认为这是因为其余的表都是空的但我检查了它,列表上的一些表(dbf文件)也是空的,然后,我认为这是一个权限问题,但所有文件都有相同的权限结构,所以,我不知道这里发生了什么.
任何光?
编辑: 它没有说明输出,它列出的表不是第一个或类似的东西
首先,dbf模块很棒.我一直在使用它取得了巨大的成功.
我正在尝试在网络共享上打开dbf文件,该共享是一个只读文件系统.当我尝试这样打开它时,我收到一个错误,指出.dbf文件是只读的.
thisTable = dbf.Table('/volumes/readOnlyVolume/thisFile.dbf')
thisTable.open()
Run Code Online (Sandbox Code Playgroud)
看看文档,看起来有一种方法可以在只读模式下打开一个表,但我无法弄明白.如果你有第二个,你能帮助我吗?
谢谢!凯尔
我想使用dapper来查询dbf文件.在我的文件example.dbf中,我有两列:
我写了类ExampleDbf
class ExampleDbf
{
public int Value { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我想写两个简单的查询
var listOne = connection.Query<ExampleDbf>("SELECT value FROM Example");
var listTwo = connection.Query<ExampleDbf>("SELECT name, value FROM Example");
Run Code Online (Sandbox Code Playgroud)
ListOne没问题,但是当我执行listTwo时,我有以下System.Data.DataException:
Additional information: Error parsing column 0 (name=System.Byte[] - Object)
Run Code Online (Sandbox Code Playgroud)
当我使用标准的DataReader时,我必须写出类似的东西
example.name = System.Text.Encoding.ASCII.GetString((byte[])reader["name"]).Trim();
Run Code Online (Sandbox Code Playgroud)
我当然可以这样写:
class ExampleDbf2
{
public int Value { get; set; }
public byte[] Name { get; set; }
public string StringName
{
get
{ …Run Code Online (Sandbox Code Playgroud) 我不知道为什么我无法使用带有“Flat Tiles (CSV/DBF)”内置 JDBC 驱动程序的 DBeaver 连接到 .DBF 文件。
我有一个共享驱动器,上面有数十个 DBF 文件。我创建了如附图所示的连接,但是当我连接到源时,我遇到了两个问题。我已经包含了我遵循的步骤以及我收到的错误。
有没有人有使用 JDBC 连接到 DBF 文件和/或使用 DBeaver 工具的经验,这可能对我有帮助?
我确实从 GitHub 下载了 DANS-DBF 库 JAR,但我不确定在这种情况下如何使用它。我注意到这个网站上写着
CsvJdbc 需要 Java 版本 1.6 或更高版本。要读取 DBF 文件,必须下载 DANS DBF 库并将其包含在 CLASSPATH 中。
但我不确定如何将其添加到 DBeaver 项目中。它们不像实际的 java 项目那样使用构建路径。
(我知道我可以在excel中打开它们,但我更喜欢这个工具来进行数据查询)。
驱动程序属性只有 .CSV 我尝试使用此设置,当它不起作用时,我将其更改为 .dbf 但它仍然不起作用

我可以很好地连接到这个文件夹,并且我知道其中有大量的 DBF 文件。

我想使用 Python 3.7 上的 dbfread 模块处理 dbf 文件,它适用于小型 dbf
\n\nfrom dbfread import DBF\nfrom struct import *\n\ntable = DBF(\'usuarios.dbf\', load=True)\nfor item in table:\n print (item)\nRun Code Online (Sandbox Code Playgroud)\n\n输出:
\n\nOrderedDict([(\'NUMUSER\', \' 0\'), (\'NOMUSER\', \'Rosy\'), (\'PASSWORD\', \'\'), (\'NIVEL\', \'SUPER\'), (\'VALIDAR\', \'P?@qMw\xc3\xa1\xc2\xbf|Ew}"Q-JW0Q0:iw^\'), (\'EMAIL\', \'MARLENGURROLA@gmail.com|\'), (\'MAILTIPO\', 1), (\'MAILFIRMA\', None), (\'MAILSMTP\', \'Ghf2U*wT3Ik?D#>W0@+9@," \xc2\xa1.deZ+%\xc2\xbfi?GL0oBrO+\xc3\xa9Z=KwXw{E(LXIv#\xc3\xb1O\xc3\xb1\xc3\xb1W+t"Aru\xc3\xa9\xc3\xb1Am\\\\O>YB$iTNv*\\\'\xc3\x91\xc3\xa92).*qv#88XZ5k%KK%R}~\xc2\xa1oOgiT\xc3\xb3\\\'=#\'), (\'HUELLA1\', None), (\'HUELLA2\', None), (\'METODO\', 0), (\'ACTIVO\', True)])\n[Finished in 0.2s]\nRun Code Online (Sandbox Code Playgroud)\n\n但是当我尝试使用大 dbf 时,它显示错误
\n\nfrom dbfread import DBF\nfrom struct import *\n\ntable = DBF(\'docum.dbf\', load=True)\nfor item in table:\n print (item)\nRun Code Online (Sandbox Code Playgroud)\n\n输出2: …