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.
-
prometheus
The Prometheus monitoring system and time series database. -
cockroach
CockroachDB - the open source, cloud-native distributed SQL database. -
tidb
TiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at : https://tidbcloud.com/free-trial -
influxdb
Scalable datastore for metrics, events, and real-time analytics -
Milvus
A cloud-native vector database, storage for next generation AI applications -
dgraph
The high-performance database for modern applications -
jaeger
CNCF Jaeger, a Distributed Tracing Platform -
vitess
Vitess is a database clustering system for horizontal scaling of MySQL. -
rqlite
The lightweight, distributed relational database built on SQLite -
groupcache
groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases. -
TinyGo
Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM. -
migrate
Database migrations. CLI and Golang library. -
VictoriaMetrics
VictoriaMetrics: fast, cost-effective monitoring solution and time series database -
pgweb
Cross-platform client for PostgreSQL databases -
immudb
immudb - immutable database based on zero trust, SQL/Key-Value/Document model, tamperproof, data change history -
go-cache
An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications. -
BigCache
Efficient cache for gigabytes of data written in Go. -
dtm
此仓库应常青藤爸爸要求,已停止维护,请移步 https://github.com/dtm-labs/dtf -
bytebase
Database DevOps and CI/CD for Developer, DBA and Platform Engineering team. -
go-mysql-elasticsearch
Sync MySQL data into elasticsearch -
ledisdb
A high performance NoSQL Database Server powered by Go -
rosedb
Lightweight, fast and reliable key/value storage engine based on Bitcask. -
pREST
PostgreSQL ➕ REST, low-code, simplify and accelerate development, ⚡ instant, realtime, high-performance on any Postgres application, existing or new -
buntdb
BuntDB is an embeddable, in-memory key/value database for Go with custom indexing and geospatial support -
go-memdb
Golang in-memory database built on immutable radix trees -
dbmate
:rocket: A lightweight, framework-agnostic database migration tool. -
xo
Command line tool to generate idiomatic Go code for SQL databases supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server -
atlas
A modern tool for managing database schemas -
sql-migrate
SQL schema migration tool for Go. -
tiedot
A rudimentary implementation of a basic document (NoSQL) database in Go -
nutsdb
A simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set. -
LinDB
LinDB is a scalable, high performance, high availability distributed time series database. -
cache2go
Concurrency-safe Go caching library with expiration capabilities and access counters -
GCache
An in-memory cache library for golang. It supports multiple eviction policies: LRU, LFU, ARC -
fastcache
Fast thread-safe inmemory cache for big number of entries in Go. Minimizes GC overhead -
gocraft/dbr (database records)
Additions to Go's database/sql for super fast performance and convenience. -
CovenantSQL
A decentralized, trusted, high performance, SQL database with blockchain features -
lotusdb
Most advanced key-value store written in Go, extremely fast, compatible with LSM tree and B+ tree, optimization of badger and bbolt.
Learn any GitHub repo in 59 seconds
Do you think we are missing an alternative of Microsoft Visual FoxPro DBF for Go or a related project?
Popular Comparisons
README
Microsoft Visual FoxPro DBF for Go
Golang package for reading and writing FoxPro dBase table and memo files.
Features
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 ¹ | ✅ | ✅* | ✅ |
Read | ✅ | ✅ | ✅ |
Write | ✅ | ✅ | ❌ |
FPT (memo) file support | ✅ | ❌ | ✅ |
Struct, json, map conversion | ✅ | ❌ | ✅ |
IO efficiency ² | ✅ | ❌ | ✅ |
Full data type support | ✅ | ❌ | ❌ |
Exclusive Read/Write³ | ✅ | ❌ | ❌ |
Search | ✅ | ❌ | ❌ |
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.
Installation
go get github.com/Valentin-Kaiser/go-dbase/dbase
Projects
Projects using this package:
Examples
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.