Skip to main content
A table-valued function (TVF) that reads a file of any supported format, inferring the format and dispatching to the matching reader (READ_PARQUET, READ_CSV, READ_JSON, READ_AVRO). Use it when you do not want to name the format up front. Like the other read TVFs, it accepts a LOCATION object or direct credentials, and reads a single file or a glob of files. READ_FILES also has a shorthand: a string literal in the FROM clause is read as READ_FILES, so
SELECT * FROM '/data/events/2026-06-01.parquet';
is equivalent to SELECT * FROM READ_FILES('/data/events/2026-06-01.parquet'). This works for local paths and for object storage that does not need credentials (for example public Amazon S3 buckets); to pass credentials or a LOCATION, call READ_FILES(...) directly.

Format inference

The format is inferred by listing the objects the path points at and inspecting the most recent one’s name, after stripping any compression suffix (.gz, .zst, .br, …). The path itself does not need an extension: a directory or glob resolves from the files it matches, so s3://bucket/events/* containing only .json.gz objects reads as gzip-compressed JSON. Recognized extensions:
ExtensionFormat
.parquetParquet
.csvCSV
.tsvTSV (read as CSV with a tab delimiter)
.json, .jsonl, .ndjsonJSON
.avroAvro
.orcORC
If the matched objects have no usable extension, READ_FILES cannot infer the format; use the format-specific TVF (READ_PARQUET, READ_CSV, …) instead.

Syntax

-- Using LOCATION object (recommended)
READ_FILES (
  LOCATION => 'location_name'
  [, PATTERN => <pattern>]
  [, COMPRESSION => <file_compression>]
)
|
-- Using static credentials
READ_FILES (
  URL => <url>
  [, COMPRESSION => <file_compression>]
  [, AWS_ACCESS_KEY_ID => <aws_access_key_id>]
  [, AWS_SECRET_ACCESS_KEY => <aws_secret_access_key>]
  [, AWS_SESSION_TOKEN => <aws_session_token>]
  [, AWS_ROLE_ARN => <aws_role_arn>]
  [, AWS_ROLE_EXTERNAL_ID => <aws_role_external_id>]
)
|
-- Shorthand: a string literal in the FROM clause
SELECT * FROM '<path>';

Parameters

ParameterDescriptionSupported input types
LOCATIONThe name of a location object that contains the Amazon S3 URL and credentials. Firebolt recommends using LOCATION to store credentials for authentication. For a comprehensive guide, see LOCATION objects.TEXT
PATTERNWhen using LOCATION, an optional glob pattern to filter files within the location’s URL path, applied relative to the location’s base path.TEXT
URLThe location of your files. The expected format is s3://{bucket_name}/{full_file_path_glob_pattern}. A local path (file:// or an absolute path such as /data/sales.parquet) is supported only where local file system access is enabled.TEXT
COMPRESSIONThe compression type of the input. If unset, it is inferred from the most recent object’s extension.TEXT
AWS_ACCESS_KEY_IDThe AWS access key ID.TEXT
AWS_SECRET_ACCESS_KEYThe AWS secret access key.TEXT
AWS_SESSION_TOKENThe AWS session token.TEXT
AWS_ROLE_ARNThe AWS role arn.TEXT
AWS_ROLE_EXTERNAL_IDThe AWS role external ID.TEXT
Parquet, ORC, JSON, and Avro read nested objects as STRUCT. CSV and TSV are read with default dialect options (comma or tab delimiter, no header row, types inferred). To control the CSV dialect (header, quote, delimiter, null string), use READ_CSV.

Return Type

A table with the data from the file. Column names and types are inferred the same way the format-specific TVF infers them.

Examples

Read a single Parquet file, inferring the format from the extension:
SELECT * FROM READ_FILES('s3://firebolt-publishing-public/help_center_assets/firebolt_sample_dataset/levels.parquet');
The bare-path shorthand reads the same file, and works across deployment modes for public data:
SELECT * FROM 's3://firebolt-publishing-public/help_center_assets/firebolt_sample_dataset/levels.parquet';
Read all matching files with a glob. The format is inferred from the matched objects, so the pattern itself needs no extension:
SELECT * FROM READ_FILES('s3://firebolt-publishing-public/help_center_assets/firebolt_sample_dataset/*');

SELECT * FROM 's3://firebolt-publishing-public/help_center_assets/firebolt_sample_dataset/levels*';
Read a gzip-compressed CSV; both the format and the compression are inferred from the object name:
SELECT * FROM READ_FILES('s3://my-bucket/exports/report.csv.gz');