---
name: "cdbmake"
section: "1"
platform: "linux"
package: "freecdb"
version: "0.78"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/cdbmake"
---

# cdbmake(1)

create a constant database

## NAME

cdbmake - create a constant database

## SYNOPSIS

**cdbmake** *cdb* *cdb.tmp*

## DESCRIPTION

**cdbmake** reads a series of encoded records from its standard input and writes a constant database to *cdb*.

**cdbmake** ensures that *cdb* is updated atomically, so programs reading *cdb* never have to wait for **cdbmake** to finish. It does this by first writing the database to *cdb.tmp* and then moving *cdb.tmp* on top of *cdb*. If *cdb.tmp* already exists, it is destroyed. The directories containing *cdb.tmp* and *cdb* must be writable to **cdbmake**; they must also be on the same filesystem.

**cdbmake** always makes sure that *cdb.tmp* is safely written to disk before it replaces *cdb*. If the input is in a bad format or if **cdbmake** has any trouble writing *cdb.tmp* to disk, **cdbmake** complains and leaves *cdb* alone.

### RECORD FORMAT

Records are indexed by keys. A key is a string. *cdb* is structured so that another program, starting from a key, can quickly find the relevant record. **cdbmake** allows several records with the same key, although most readers take only the first record, and **cdbmake** slows down somewhat if there are many records with the same key.

**cdbmake** and [**cdbdump**(1)](/cdbdump/1.md) preserve the order of records.

A record is encoded for **cdbmake** as +*klen*,*dlen*:*key*-\>*data* followed by a newline. Here *klen* is the number of bytes in *key* and *dlen* is the number of bytes in *data*. The end of *data* is indicated by an extra newline. For example:

  \+3,5:one-\>Hello\
   \+3,7:two-\>Goodbye

*key* and *data* may contain any characters, including colons, dashes, newlines, and nulls.

Keys and data do not have to fit into memory. A database cannot exceed 4 gigabytes.

*cdb* is portable across machines.

## SEE ALSO

[cdbdump(1)](/cdbdump/1.md), [cdbget(1)](/cdbget/1.md), [cdbstats(1)](/cdbstats/1.md)
