Skip to content

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

OptionDefaultDescription
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 row1Row 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.)
EncodingUTF-8File 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 rows0Number 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) become DATE or TIMESTAMP
  • Columns matching boolean patterns (true/false, yes/no, 1/0) become BOOLEAN
  • 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-1252 for 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.

{"id": 1, "name": "Alice", "email": "[email protected]"}
{"id": 2, "name": "Bob", "email": "[email protected]"}

JSON array: a top-level array containing objects.

[
{"id": 1, "name": "Alice", "email": "[email protected]"},
{"id": 2, "name": "Bob", "email": "[email protected]"}
]

Rime auto-detects the format. You do not need to specify which one your file uses.

Configuration options

OptionDefaultDescription
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 objectstrueWhen 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 typeSnowflake type
stringVARCHAR
number (integer)NUMBER
number (decimal)FLOAT
booleanBOOLEAN
null(column type inferred from non-null values)
objectVARIANT (if flattening is disabled)
arrayVARIANT

File size limits

TierMaximum file size
Free / Trial50 MB
Small Business500 MB
Business2 GB
Business Critical5 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