File Uploads
File upload connectors load structured data from CSV and JSON files into Snowflake. Use them for one-off data imports, reference data that does not live in a database, or data exports from systems that Rime does not have a dedicated connector for.
CSV files
Upload methods
Drag and drop: in the connector setup wizard, drag a CSV file onto the upload area or click to browse your filesystem.
API upload: send a POST request to the connector’s upload endpoint with the file as a multipart form upload. See the API documentation for details.
Configuration options
| Option | Default | Description |
|---|---|---|
| Delimiter | , (comma) | Character separating columns. Common alternatives: \t (tab), ; (semicolon), ` |
| Quote character | " (double quote) | Character used to wrap fields that contain the delimiter or newlines |
| Header row | 1 | Row number containing column headers. Set to 0 if the file has no headers, in which case Rime generates column names (column_1, column_2, etc.) |
| Encoding | UTF-8 | File character encoding. Supported: UTF-8, UTF-16, ISO-8859-1 (Latin-1), Windows-1252 |
| Null values | (empty string) | String that represents null/missing values. Common values: NULL, NA, N/A, \N. Empty fields are always treated as null regardless of this setting |
| Skip rows | 0 | Number of rows to skip before the header row. Useful for files with title rows or metadata above the actual data |
Type detection
Rime infers column types by scanning the file:
- Columns with only integer values become
NUMBER - Columns with decimal values become
FLOAT - Columns matching date patterns (ISO 8601,
DD/MM/YYYY,MM/DD/YYYY) becomeDATEorTIMESTAMP - Columns matching boolean patterns (
true/false,yes/no,1/0) becomeBOOLEAN - Everything else becomes
VARCHAR
You can override inferred types in the schema preview step before finalising the upload.
Common issues
- Encoding errors: if you see garbled characters in the preview, the file encoding may not match the selected encoding. Try
Windows-1252for files exported from Excel on Windows. - Misaligned columns: if data appears in the wrong columns, check the delimiter setting. Files exported from European-locale systems often use semicolons instead of commas.
- Quoted fields: if fields contain the delimiter character, they must be wrapped in the quote character. Rime handles RFC 4180-compliant quoting by default.
JSON files
Supported formats
Rime supports two JSON formats:
JSON Lines (JSONL): one JSON object per line. This is the preferred format for large files because Rime can process it in a streaming fashion without loading the entire file into memory.
JSON array: a top-level array containing objects.
[]Rime auto-detects the format. You do not need to specify which one your file uses.
Configuration options
| Option | Default | Description |
|---|---|---|
| Record path | (root) | JSON path to the array of records, if records are nested within a wrapper object (e.g., $.data, $.results). Leave blank for top-level arrays or JSON Lines |
| Flatten nested objects | true | When enabled, nested objects are flattened into columns with underscore-separated names (e.g., address.city becomes address_city). When disabled, nested objects are stored as JSON strings |
Nested object handling
With flattening enabled, a record like:
{ "id": 1, "address": { "street": "123 Queen St", "city": "Auckland", "country": "NZ" }, "tags": ["vip", "enterprise"]}Produces columns: id, address_street, address_city, address_country, tags.
The tags array is stored as the JSON string ["vip", "enterprise"] because arrays are not flattened into separate rows. To normalize arrays into rows, use a dbt transformation after ingestion.
Type detection
JSON files have explicit types (string, number, boolean, null), which Rime maps directly:
| JSON type | Snowflake type |
|---|---|
| string | VARCHAR |
| number (integer) | NUMBER |
| number (decimal) | FLOAT |
| boolean | BOOLEAN |
| null | (column type inferred from non-null values) |
| object | VARIANT (if flattening is disabled) |
| array | VARIANT |
File size limits
| Tier | Maximum file size |
|---|---|
| Free / Trial | 50 MB |
| Small Business | 500 MB |
| Business | 2 GB |
| Business Critical | 5 GB |
Files larger than the tier limit are rejected at upload time with an error message indicating the current limit.
For very large datasets, consider using a database connector or REST API connector instead of file uploads.
Schema preview
After uploading a file, Rime displays a schema preview showing:
- Column names (inferred from headers or generated)
- Detected data types
- A sample of the first 20 rows
You can adjust column names, override detected types, and exclude columns before finalising the upload. Once confirmed, Rime converts the file to Parquet and loads it into Snowflake through the standard extraction pipeline.
Repeated uploads
File upload connectors do not have schedules. Each upload creates a new extraction run. If you upload a new version of the same file, Rime loads the new data alongside the existing data (append mode). To replace the previous data, truncate the destination table before uploading, or use a dbt transformation to deduplicate.
For recurring file-based data loads, consider whether the source system has an API that could be configured with the REST API connector instead.
Next steps
- Review Schema Discovery for details on type mapping
- Check the run history after uploading to verify the data loaded correctly