Upload CSV and Excel files
Turn a CSV file or Excel workbook into tables you can query like a database. Preview before importing, then replace or append later, with recent versions kept.
An upload makes tables from a file. Each CSV file, or each Excel sheet you pick, becomes one table in an uploaded-files connection. Discovery, datasets, filters and row policies then treat it like any database table.
You need a role that can add connections (Owner, Admin or Builder) and edit access to the workspace.
What you can upload
CSV files, as
.csv,.tsv,.tabor.txt, in UTF-8, Windows-1252 or UTF-16, separated by commas, semicolons, tabs or bars.Excel workbooks in
.xlsxor.xlsm.
Older .xls workbooks and password-protected ones are refused, with a note on what to do.
Upload a file
Open Data, then New connection, and choose Upload a file. To add to a connection you already have, open it and choose Upload a file there.
Under Where it goes, choose a Connection, or A new connection with a Workspace and a Name. Keep related files together: a "Customer surveys" connection can hold a table per survey.
Drop the file on the File area, or browse for it. Halo uploads it and reads it in the background.
Check the preview, and change anything Halo got wrong:
Sheets: in a workbook, turn on Import this sheet for each one you want.
Table name: lower-case letters, digits and
_, starting with a letter or_.Header row: pick another row, or No header row.
Columns: rename a column, change its type, or leave it out.
Choose Import. With several sheets, it counts them, as in Import 3 tables. Choose Discard upload to throw it away instead.
Halo writes the tables, then runs discovery to add them to the catalog. When it says Ready to build datasets on, the tables are ready. Choose Open the connection to see them.
If an import fails, you go back to the preview with the reason.
What Halo works out for you
Halo reads every row, so messy files usually come through without help.
Encoding and separator: the encoding from the file's bytes, and the separator from whichever splits the first lines most consistently.
The header row: the first row about as wide as those below it with distinct words, skipping titles and notes above the table.
Each column's type: the narrowest type every non-empty value fits.
| Type | Reads as |
|---|---|
| Integer, number | 1,234, $1,234.50, € 12, 12 USD, (500) as -500, and 12.5% as 0.125 |
| Boolean | true, false, yes, no |
| Date, timestamp | ISO first, then month before day as Excel writes U.S. dates, then day before month, then month names. If 31/12/2025 appears, the whole column reads day first |
| Text | Everything else, including whole numbers with leading zeros such as 00501, which stay as text |
null, n/a, - and Excel's errors such as #N/A count as empty.
A column is marked as currency when at least half its values carried the same symbol or code, and as percent when all of them had a %. In workbooks, Halo reads the stored numbers and dates rather than what the format shows, so nothing is lost to rounding.
If you choose a type a value doesn't fit, that value becomes empty, and the import's steps count how many.
Replace or append
Your data changes, and your table can follow it. Open the table from its connection, then choose:
Replace: the file's rows take the place of the table's.
Append: the file's rows are added to the table. Its columns must match the table's by name, after any renames. If they don't, Halo says which are missing, new or a different type, and refuses the file until they match.
Charts and reports over the table keep working, and read the new rows the next time they query it, since each upload starts the cache afresh.
Versions
Each upload that replaces or adds rows is a new version, listed under Versions on the table's page with its change, file, rows and date. Halo keeps the last 10.
Restoring an earlier version makes it current again, as a new version, so you can always go forward again.
Limits
Your plan caps the size of one file and the rows in one table.
| Plan | Largest file | Most rows per table |
|---|---|---|
| Standard | 250 MB | 2,000,000 |
| Professional | 1,000 MB | 10,000,000 |
| Enterprise | 5,000 MB | 100,000,000 |
The preview warns you if a file has too many rows. Your organization's limits can differ from these, since Halo can change them for you. Usage in Settings doesn't list them, so ask your account manager if you need to know yours.
Uploaded tables, every kept version and files not yet imported count toward your plan's storage. An import that would pass it fails, and the old files stay. Uploaded-files connections don't count toward your limit on connections.
Where your data goes
The tables are stored encrypted, and queries run inside Halo. Halo deletes the file you uploaded once it's imported.
A dataset can join uploaded tables in the same connection directly. Joining them with another connection's tables needs an extract.
Deleting a table
At the foot of a table's page, choose Delete table. It goes to the Trash for 30 days and leaves its connection's catalog at once, and datasets over it can't read it until it's restored. Removing the connection takes all of its tables with it.