This page describes Calíope 1.7, the version I am building right now. 1.6 is on the App Store for the Mac, iPad, iPhone, Apple Watch, Apple TV and Apple Vision Pro. The changelog says which version each feature landed in.
Adds an “Open in Calíope” button to every topic. It only works with the app installed.
Load data from a CSV, JSON, or Excel (.xlsx) file directly into a table using the three-step import wizard.
Where it is: Schema tree › right-click › Import data…
The Data import wizard inserts rows into a table from a file, without writing SQL.
How to open it: in the schema tree, open a table's context menu and choose Import data…. That table becomes the target.
Step 1 — The file
- Press Choose file and pick a .csv, .json or .xlsx.
- CSV — comma-separated, with RFC 4180 quoting: a quoted field can hold commas and line breaks. The first row holds the column names.
- JSON — an array of objects ([{"col": value}, …]); the keys are the column names.
- Excel (.xlsx) — the first sheet is read, and its first row holds the column names.
Step 2 — Columns: each file column is assigned to a table column, or ignored (see Map columns on import). If the first row of a CSV or a sheet is not names, turn off First row is header: the columns are numbered and that row is imported with the rest.
Step 3 — Import
- If the server supports more than one way of handling duplicates, choose the mode (see Import modes). If it supports only one, there is nothing to choose and the picker does not appear.
- Choose the batch size: 100, 500 —the default— or 1000 rows per statement.
- Press Import. A bar shows progress batch by batch, and at the end you see how many rows went in and the errors, if any.
Available on macOS, iPad, iPhone and Apple Vision Pro.
How to assign source file columns to destination table columns in step 2 of the import wizard.
Where it is: Schema tree › right-click › Import data…
Step 2 of the wizard decides which table column each file column goes to.
- Each row stands for a file column; the picker on the right offers the columns of the target table.
- Columns named exactly like one in the table —case included— arrive already assigned. The rest start at Ignore: assign them by hand if they belong somewhere.
- Ignore leaves that column out. Useful when the file has more columns than the table, or to skip an identifier the server generates itself.
Before importing, check that every NOT NULL column without a default has a file column assigned: otherwise the server rejects those rows.
When a row clashes with a primary or unique key: fail, skip it or replace the one that was there. What is offered depends on the server.
Where it is: Schema tree › right-click › Import data…
In step 3 of the wizard you choose what happens when a file row clashes with a primary or unique key that already exists. The wizard only offers the modes the server can honour.
Insert (on every server; where Skip duplicates is offered, the wizard starts on that one): the batch statement that clashes fails, and the import says so. Use it when there should be no duplicates and you want to know if there are.
Skip duplicates: the clashing row is dropped and the rest goes on. Useful to load a file that is partly in the table already.
Replace duplicates: the existing row is deleted and the file's row goes in. Bear in mind that it fires delete triggers and that columns the file does not bring go back to their default.
MySQLMariaDBAurora
All three are offered.
PostgreSQL
Insert and Skip duplicates are offered: there is no replace.
SQL ServerOracleClickHouse
Only Insert, so the picker does not appear.
Available on macOS, iPad, iPhone and Apple Vision Pro.