| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| EditDB.zip | 2026-09-30 | 21.8 kB | |
| README.md | 2026-09-30 | 16.7 kB | |
| EditDB.app.zip | 2026-09-30 | 337.9 kB | |
| editdb-gui.exe | 2026-09-30 | 239.9 kB | |
| editdb-cli | 2026-09-30 | 89.3 kB | |
| editdb-cli.exe | 2026-09-30 | 218.4 kB | |
| editdb.exe | 2026-09-30 | 75.8 kB | |
| Totals: 7 Items | 999.8 kB | 0 |
EditDB
A fast, typed database table editor with relational lookups, schema management, live filtering, column header sorting, and CSV import. Built as a single coherent database system across desktop, command line, vintage MS-DOS, and modern web platforms.
Available Editions
EditDB is available in six tailored editions sharing identical .EDB database files:
| Edition | Executable / Path | Platform / Environment | Description |
|---|---|---|---|
| macOS Cocoa GUI | EditDB.app |
macOS (Apple Silicon / Intel) | Native Cocoa app with toolbar, sheets, popover relational pickers, and sorting. |
| Windows 11 GUI | editdb-gui.exe |
Windows 10 / 11 (64-bit) | Modern Win32 application with ListView controls, custom dialogs, and native file pickers. |
| MS-DOS 6.22 | editdb.exe / floppy.img |
MS-DOS 6.22 / DOSBox-X | 16-bit real-mode text UI with direct video memory rendering and mouse driver support. |
| macOS Terminal TUI | editdb-cli |
macOS Terminal / zsh | Native ncurses full-screen interactive console application. |
| Windows Console TUI | editdb-cli.exe |
Windows Terminal / cmd.exe | Native Win32 Console interactive text-mode application. |
| PHP Web Edition | EditDB/index.php |
Web Browser (PHP 7.4 - 8.x) | Zero-dependency responsive web application with CSS Grid and interactive modals. |
Launching EditDB
1. macOS Cocoa GUI
Double-click EditDB.app in Finder or launch it from terminal:
open EditDB.app
You can also launch it with an explicit database file:
open -a EditDB.app address.EDB
2. Windows 11 GUI
Double-click editdb-gui.exe in File Explorer, or run:
editdb-gui.exe address.EDB
3. macOS & Windows Command Line (TUI)
Run from your terminal shell:
# Open an existing database or prompt for name
./editdb-cli address.EDB
# Create a new table or open by name (resolves to ./contacts.EDB)
./editdb-cli contacts
# Directly import a CSV file into a new table
./editdb-cli --import customers.csv
4. MS-DOS 6.22
On native hardware, virtual machines (QEMU, VirtualBox), or DOSBox-X:
C:\> EDITDB ADDRESS.EDB
C:\> EDITDB CUSTOMER.CSV
C:\> EDITDB
To run directly in DOSBox-X from the workspace:
dosbox-x -c "mount c ow-dos" -c "mount d ." -c "d:" -c "editdb.exe address.edb"
Or boot the pre-configured floppy disk image floppy.img which contains EDITDB.EXE, sample databases, and CSV files.
5. PHP Web Edition
Start the built-in PHP development server inside EditDB/:
cd EditDB
php -S localhost:8000
Open http://localhost:8000/index.php in your web browser. To deploy to Apache or Nginx with mod_userdir (e.g. ~username/EditDB/), copy the EditDB/ folder to your server's public_html directory.
Database Architecture & File Format
EditDB tables are stored in human-readable, UTF-8-compatible CSV files with an .EDB extension.
Structure of an .EDB File
EDITDB,1
TABLE,person
FIELD,pid,SERIAL,Person ID,Y,Y
FIELD,first_name,CHAR,First name,Y,N
FIELD,last_name,CHAR,Last name,Y,N
FIELD,birth_date,DATE,Date of birth,Y,N
FIELD,address_id,LOOKUP,Address reference,address.EDB,aid,Y,N
DATA
1,John,Doe,1985-04-12,1
2,Jane,Smith,1992-11-23,2
- Header:
EDITDB,1declares format version 1. - Table Declaration:
TABLE,<table_name>names the active relation. - Field Specifications:
FIELD,<name>,<type>,<description>[,lookup_path,lookup_field],<visible>,<fixed> - Data Marker:
DATAindicates the start of record rows. - Records: Standard comma-separated rows. Double quotes are applied automatically when field values contain commas or quotes.
Field Types
| Type | Format & Rules | Description |
|---|---|---|
CHAR |
Text string (up to 255 chars) | Free-form alphanumeric characters. |
INT |
Signed whole numbers | 64-bit integer values (e.g. -42, 10000000000). Strips thousand commas on import. |
REAL |
Signed decimal numbers | Standard floating-point numbers (e.g. 3.14159, -0.005). |
DATE |
Strict YYYY-MM-DD |
Validates month ranges (01–12), day ranges per month, and leap years. Fallback default is 1900-01-01. |
SERIAL |
Automatic positive integer | Read-only sequence primary key generated automatically (1, 2, 3...). |
LOOKUP |
Reference to foreign SERIAL |
Foreign key referencing a SERIAL field in another .EDB table. Automatically expands joined fields in views. |
Field Attributes
- Visible (
Y/N): Controls whether the column is shown in grid/table views. Hidden fields remain intact in data records and forms. - Fixed (
Y/N): Pins columns to the left side of the screen or window. When scrolling right through wide tables, fixed columns stay stationary like frozen panes in a spreadsheet.
Detailed Program Usage
1. Main Table View & Navigation
EDITDB TABLE: address ROWS: 5 FIELDS: 5 SORT: [aid ▲]
aid Address Postal code City Country
-------------------------------------------------------------------------------
1 100 Main Street 10001 New York United States
2 221B Baker Street NW1 6XE London United Kingdom
3 10 Market Square 94105 San Francisco United States
4 42 Park Avenue 02138 Cambridge United States
5 12 High Street CB2 1TN Cambridge United Kingdom
===============================================================================
[Up Row] [Down Row] [Left Field] [Right Field] [Enter Edit] [A Add] [I Import]
[F Filter] [C Fields] [R Order] [N New] [O Open] [S Save] [W Save As] [Q Quit]
- Row Navigation: Use ↑ and ↓ (or Page Up / Page Down) to move the selection cursor across records.
- Column Scrolling: Use ← and → to scroll columns horizontally. Fixed/pinned columns stay visible on the left side while scrollable columns slide underneath.
- Mouse Control: In GUI editions and in DOS/CLI (with mouse driver loaded), click any row to select it, double-click to edit, or click any action button at the bottom.
2. Searching & Live Filtering
Filter records instantly across all fields without altering stored database contents:
- GUI & Web Editions: Type directly into the search bar at the top of the window. The table filters in real time as you type. Clear the box to restore all records.
- DOS & Console TUI: Press F. A prompt appears:
Filter (Enter to apply, empty to clear):. Type your search text and press Enter. The status bar displaysFilter: "..." (N records). Press F and Enter on an empty prompt to clear the filter.
3. Column Sorting
Sort table data ascending or descending by any field:
- macOS, Windows GUI & Web Editions: Click any column header to sort by that column ascending ($\blacktriangle$). Click the same header again to invert sort order to descending ($\blacktriangledown$).
- DOS & Console TUI: Press R (Order). Select the desired field, choose
AscendingorDescending, and press Enter. INTandSERIALfields sort numerically (1, 2, 10instead of1, 10, 2).REALfields sort by numeric floating-point value.DATEfields sort chronologically (YYYY-MM-DD).CHARfields sort alphabetically case-insensitively.
4. Adding & Editing Records
Adding a Record
- GUI & Web: Click Add Record or press Cmd+N / Ctrl+N.
- DOS & TUI: Press A. A dedicated multi-line form displays each field with its name and full descriptive label:
EDITDB ADD RECORD: address
-------------------------------------------------------------------------------
aid: SERIAL is generated automatically
Address:
> 12 High Street
Postal code:
> CB2 1TN
City:
> Cambridge
Country:
> United Kingdom
===============================================================================
[Up Select] [Down Select] [Enter Edit] [V Select Lookup] [S Save] [Esc Cancel]
Modifying Fields
- Move between fields using ↑ and ↓ or click the input line.
- Press Enter to type or update a value. EditDB validates the value against the field's declared type upon hitting Enter.
- To save the record, press S (or click Save).
- To discard changes, press Esc (or click Cancel).
[!NOTE]
SERIALprimary keys are generated automatically upon saving and cannot be modified manually.
5. Working with Relational Lookups
A LOOKUP field creates a relationship linking rows in the current table to unique records in another .EDB table:
erDiagram
PERSON {
SERIAL pid PK
CHAR first_name
CHAR last_name
DATE birth_date
LOOKUP address_id FK
}
ADDRESS {
SERIAL aid PK
CHAR address
CHAR pcode
CHAR city
CHAR country
}
PERSON }|--|| ADDRESS : "address_id references aid"
How Lookups Render in Table Views
When a table contains a LOOKUP field (e.g. address_id referencing aid in address.EDB), EditDB automatically resolves the relationship:
- The raw foreign key value (
aid) is displayed. - All non-serial columns from the referenced row (
address,pcode,city,country) are dynamically displayed alongside the record in same-row joined columns. - If the foreign table is modified or foreign records are updated, the main table displays the refreshed data automatically.
Interactive Lookup Record Selector
When adding or editing a record with a LOOKUP field:
- GUI & Web Editions: An interactive picker dialog/popover displays all records from the foreign table. Click any row to link it.
- DOS & Console TUI: Navigate to the
LOOKUPfield and press Enter or V (Select Lookup). A full-screen selector appears showing the foreign database table: - Use ↑ and ↓ to highlight the referenced record.
- Press Enter to select it and return the serial key to the record form.
- Press E on a highlighted record to edit the foreign record directly in its source database without leaving your current workflow!
6. Schema & Field Management
Press C (or choose Manage Fields / Cmd+Shift+S) to open the Schema Editor:
EDITDB FIELDS: address (5 fields)
# Field Name Type Vis Fix Description
-------------------------------------------------------------------------------
1 aid SERIAL Y Y Address ID
2 address CHAR Y N Address
3 pcode CHAR Y N Postal code
4 city CHAR Y N City
5 country CHAR Y N Country
===============================================================================
[Up Select] [Down Select] [Enter Edit] [A Add Field]
[U Move Up] [D Move Down] [I Import CSV] [Q Back]
- Add Field (A): Prompts for field name, type, description, and visibility/fixed flags. If the table already has records, you are prompted to provide a default value to populate existing rows (or auto-sequenced serials if choosing
SERIAL). - Edit Field (Enter): Modify name, type, description, visibility, fixed status, or lookup reference table. When changing types, EditDB validates existing records against the new type.
- Reorder Fields (U / D): Press U (Move Up) or D (Move Down) to change the physical order of columns in the database.
- Exit (Q / Esc): Returns to table view with updated schema layout.
7. CSV Import Function
EditDB provides a robust CSV import facility that reads raw comma-separated files, detects column data types, sanitizes field identifiers, and converts data into a structured .EDB table.
Capabilities & Automatic Conversions
- Header Parsing: The first line is parsed for source column headers. Illegal characters and spaces are converted to clean snake_case identifiers, and duplicate column names are suffixed automatically (
field_2,field_3). - Smart Type Detection: Analyzes the first 200 data rows to infer whether a column contains
INT,REAL,DATE, orCHARdata. - Number Formatting: Strips commas used as thousand separators (e.g.
"24,699,564,032"is converted to clean integer24699564032). - Date Normalization: Standardizes calendar dates to
YYYY-MM-DD. Missing values,"N/A", or dashes ("-") are normalized to1900-01-01. - Unicode BOM Handling: Automatically detects and strips UTF-8 byte-order marks (
EF BB BF) at the beginning of files.
Running a CSV Import
- macOS Cocoa GUI: Choose File → Import CSV... (Cmd+I) or click Import in the toolbar.
- Windows GUI: Choose File → Import CSV... (Ctrl+I) or drag and drop a
.csvfile onto the window. - DOS & Console TUI:
- Run with file argument:
editdb.exe customers.csv - Or run with flag:
editdb.exe --import customers.csv - Or inside table view / schema manager, press I (Import).
- PHP Web Edition: Click 📥 Import CSV File in the top navigation bar.
In all editions, an interactive schema review screen is presented before records are imported:
EDITDB IMPORT CSV: CUSTOMERS (5 fields, 250 rows)
Field Name Type Description Sample Value
-------------------------------------------------------------------------------
cust_id INT Customer ID 101
company_name CHAR Company Name Acme Industrial
signup_date DATE Registration Date 2026-05-15
credit_limit REAL Credit Line Limit 15000.00
country CHAR Country Region United States
===============================================================================
[Up Select] [Down Select] [Enter Edit Field] [T Table Name] [I Execute Import] [Esc Cancel]
Press Enter on any field to adjust its target name, type, or description. Press T to change the target table name. When ready, press I to execute the import and save the new .EDB file.
Keyboard & Action Reference
| Action | macOS Cocoa GUI | Windows 11 GUI | DOS / Console TUI | PHP Web Edition |
|---|---|---|---|---|
| Edit Record | Double-Click / Cmd+E | Double-Click / Enter | Enter | Click ✏️ Edit |
| Add Record | Cmd+N | Click Add Record | A | Click ➕ Add Record |
| Delete Record | Cmd+Backspace | Click Delete Record | N/A (Form clear) | Click 🗑️ Delete |
| Sort Column | Click Header | Click Header | R (Order) | Click Header |
| Live Filter | Search field | Search field | F | Search input |
| Manage Fields | Cmd+Shift+S | Click Schema | C | Click ⚙️ Fields |
| Move Field Up | Click Move Up | Click Move Up | U | Click ▲ Up |
| Move Field Down | Click Move Down | Click Move Down | D | Click ▼ Down |
| Import CSV | Cmd+I | Ctrl+I | I | Click 📥 Import CSV |
| Save Database | Cmd+S | Ctrl+S | S | Click 💾 Save |
| Save As | Cmd+Shift+S | Ctrl+Shift+S | W | Click ⬇ Download |
| New Database | Cmd+Alt+N | Click New Table | N | Click 📄 New Table |
| Open Database | Cmd+O | Ctrl+O | O | Table dropdown |
| Quit | Cmd+Q | Alt+F4 | Q | Close tab |
Technical Specifications & Limits
- String Storage: All record values are dynamically allocated and resized in heap memory (
db_record_set_value). - Maximum Buffer Limits:
DB_NAME_SIZE: 32 bytes (Field identifiers)DB_TABLE_SIZE: 48 bytes (Table names)DB_DESC_SIZE: 80 bytes (Field descriptions)DB_VALUE_SIZE: 256 bytes (Single record field value)DB_PATH_SIZE: 128 bytes (File paths)- DOS Compatibility: Builds with Open Watcom v2 in Large memory model (
-ml), keeping stack usage under 16 KB and operating within real-mode MS-DOS conventional 640 KB memory constraints.