SIMPLE_SQL_BACKUP
Database backup utilities including online backup API with progress callbacks, memory-to-file and file-to-memory copies.
Creation
make (a_db: SIMPLE_SQL_DATABASE)
Create backup helper attached to database.
Simple Backup
backup_to_file (a_path: READABLE_STRING_GENERAL)
Create complete backup to file.
restore_from_file (a_path: READABLE_STRING_GENERAL)
Restore database from backup file.
Memory Operations
copy_to_memory: SIMPLE_SQL_DATABASE
Copy file database to in-memory database.
copy_from_memory (a_memory_db: SIMPLE_SQL_DATABASE)
Copy in-memory database to current file database.
SIMPLE_SQL_ONLINE_BACKUP
Online backup with progress tracking for large databases.
Online Backup
make (a_source: SIMPLE_SQL_DATABASE; a_dest_path: READABLE_STRING_GENERAL)
Create online backup to destination file.
set_progress_callback (a_callback: PROCEDURE [INTEGER, INTEGER])
Set callback receiving (remaining_pages, total_pages).
set_page_step (a_count: INTEGER)
Pages to copy per step (default: 100).
run
Execute backup with progress callbacks.
is_complete: BOOLEAN
Did backup complete successfully?
Examples
Simple Backup
local
backup: SIMPLE_SQL_BACKUP
do
create backup.make (db)
backup.backup_to_file ("backup_2024-01-15.db")
print ("Backup created%N")
end
Online Backup with Progress
local
online_backup: SIMPLE_SQL_ONLINE_BACKUP
do
create online_backup.make (db, "large_backup.db")
-- Progress callback
online_backup.set_progress_callback (
agent (remaining, total: INTEGER)
local
pct: REAL_64
do
pct := ((total - remaining) / total) * 100
print ("Backup progress: " + pct.truncated_to_integer.out + "%%%N")
end
)
online_backup.set_page_step (50) -- Smaller steps for more frequent updates
online_backup.run
if online_backup.is_complete then
print ("Backup complete!%N")
end
end
Memory to File
local
mem_db, file_db: SIMPLE_SQL_DATABASE
backup: SIMPLE_SQL_BACKUP
do
-- Work with in-memory database
create mem_db.make_memory
mem_db.execute ("CREATE TABLE test (id INTEGER PRIMARY KEY, value TEXT)")
mem_db.insert_into ("test").value ("value", "data").execute
-- Save to file
create file_db.make ("saved.db")
create backup.make (file_db)
backup.copy_from_memory (mem_db)
mem_db.close
file_db.close
end
Load File into Memory
local
file_db, mem_db: SIMPLE_SQL_DATABASE
backup: SIMPLE_SQL_BACKUP
do
-- Load existing database into memory for fast operations
create file_db.make ("existing.db")
create backup.make (file_db)
mem_db := backup.copy_to_memory
-- Work with fast in-memory copy
result := mem_db.query ("SELECT * FROM large_table")
mem_db.close
file_db.close
end
When to Use Online Backup
Use SIMPLE_SQL_ONLINE_BACKUP for large databases where you need progress feedback or want to perform backup while other operations continue.