Programming language: Go
License: BSD 3-clause "New" or "Revised" License
Tags: Database     Go     Package     Golang     Foxpro     DBF     Dbase    

Microsoft Visual FoxPro DBF for Go alternatives and similar packages

Based on the "Database" category.
Alternatively, view go-dbase alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Microsoft Visual FoxPro DBF for Go or a related project?

Add another 'Database' Package


Microsoft Visual FoxPro DBF for Go

GoDoc License Linters CodeQL Examples Go Report

Golang package for reading and writing FoxPro dBase table and memo files.


There are several similar packages but they are not suited for our use case, this package implements the following features:

Feature go-dbase go-dbf go-foxpro-dbf
Encoding support ¹ *
FPT (memo) file support
Struct, json, map conversion
IO efficiency ²
Full data type support
Exclusive Read/Write³
Create new tables, including schema
Open database

¹ This package currently supports 13 of the 25 possible encodings, but a universal encoder will be provided for other code pages that can be extended at will. A list of supported encodings can be found here. The conversion in the go-foxpro-dbf package is extensible, but only Windows-1250 as default and the code page is not interpreted.

² IO efficiency is achieved by using one file handle for the DBF file and one file handle for the FPT file. This allows for non blocking IO and the ability to read files while other processes are accessing these. In addition, only the required positions in the file are read instead of keeping a copy of the entire file in memory.

³ The files can be opened completely exclusively and when writing a file, the data block to be written can be locked during the process. This is done to prevent other processes from writing the same data block. When reading, this is not a concern as the data is not changed.

Disclaimer: This library should never be used to develop new software solutions with dbase tables. The creation of new tables only serves to transfer old databases or to remove faulty data.

Supported column types

At this moment not all FoxPro column types are supported. When reading column values, the value returned by this package is always interface{}. If you need to cast this to the correct value, helper functions are provided.

The supported column types with their return Go types are:

Column Type Column Type Name Golang type
C Character string
Y Currency float64
B Double float64
D Date time.Time
T DateTime time.Time
F Float float64
I Integer int32
L Logical bool
M Memo string
M Memo (Binary) []byte
N Numeric (0 decimals) int64
N Numeric (with decimals) float64
Q Varbinary []byte
V Varchar []byte
W Blob []byte
G General []byte
P Picture []byte

If you need more information about dbase data types take a look here: Microsoft Visual Studio Foxpro

Supported encodings

The following encodings are supported by this package:

Code page Platform Code page identifier
437 U.S. MS-DOS x01
850 International MS-DOS x02
852 Eastern European MS-DOS x64
865 Nordic MS-DOS x66
866 Russian MS-DOS x65
874 Thai Windows x7C
1250 Central European Windows xC8
1251 Russian Windows xC9
1252 Windows ANSI x03
1253 Greek Windows xCB
1254 Turkish Windows xCA
1255 Hebrew Windows x7D
1256 Arabic Windows x7E

All encodings are converted from and to UTF-8.


go get github.com/Valentin-Kaiser/go-dbase/dbase


Projects using this package:

👻 G(h)oST


These examples can be found in the [examples](./examples/) directory:

  • [Read](./examples/read/read.go)
  • [Write](./examples/write/write.go)
  • [Search](./examples/search/search.go)
  • [Create](./examples/create/create.go)
  • [Database](./examples/database/database.go)

*Note that all licence references and agreements mentioned in the Microsoft Visual FoxPro DBF for Go README section above are relevant to that project's source code only.