Load JSON Files with LOAD DATA
On this page
Data from JSON files can be loaded into SingleStore using the LOAD DATA command.
JSON files can be loaded into SingleStore tables in two ways:
-
Fields in the JSON can be mapped to columns in a SingleStore table using
FORMAT JSON
and asubvalue_
.mapping -
SQL queries over the columns are used to query the JSON data.
-
-
Entire JSON values can be loaded in a single
JSON
type column in SingleStore usingFORMAT JSON
and the<- %
subvalue_
.mapping Using the JSON
type provides:-
Columnarized storage for efficient analytics.
-
JSON Functions to extract, search and modify the data.
-
Full-text search, computed columns to optimize lookups.
-
Refer to Using JSON for an overview and examples.
-
For more information on the LOAD DATA
command, refer to LOAD DATA.LOAD DATA
with JSON files, refer to Load JSON Files Examples.
Syntax
LOAD DATA [LOCAL] INFILE 'file_name'[REPLACE | SKIP { CONSTRAINT | DUPLICATE KEY } ERRORS]INTO TABLE tbl_nameFORMAT JSONsubvalue_mapping[SET col_name = expr,...][WHERE expr,...][MAX_ERRORS number][ERRORS HANDLE string]subvalue_mapping:( {col_name | @variable_name} <- subvalue_path [DEFAULT literal_expr], ...)subvalue_path:{% | [%::]ident [::ident ...]}
Map JSON Fields to Columns
Use the FORMAT JSON
syntax and a subvalue_
to map fields from JSON values to columns in SingleStore.
When this syntax is used, for each JSON value in the file file_
, the values in the fields specified in the subvalue_
are extracted and the extracted subvalues are assigned to either:
-
A column of a row in the SingleStore table
tbl_
.name -
A variable which is further used in the
SET
clause to assign a value to a column in a row in the SingleStore table. -
If a specified subvalue cannot be found in the input JSON, the engine will assign the
DEFAULT
clause literal instead. -
If a column is not mentioned in the subvalue mapping, all values of that column will be set to NULL.
In the following example:
-
The values from
json_
andsubvalue_ path1 json_
are assigned to the columnssubvalue_ path2 singlestore_
,col_ name1 singlestore_
, respectively.col_ name2 -
If no value is found for
json_
,subvalue_ path2 singlestore_
is set to thecol_ name2 DEFAULT
value42
. -
The value from
json_
is assigned to the variablesubvalue_ path3 @varname
, and theSET
statement assigns the result of the expression on@varname
(expr(@varname)
) tosinglestore_
.col_ name3
LOAD DATA INFILE 'filename'INTO TABLE tbl_name(singlestore_col_name1 <- json_subvalue_path1,singlestore_col_name2 <- json_subvalue_path2 DEFAULT 42,@varname <- json_fieldname3)SET singlestore_colname3 = expr(@varname)FORMAT JSON;
Load Entire JSON Value to a Single Column
Use FORMAT JSON
and the <- %
subvalue_
In the following example, each JSON value in the file will be loaded into a column in a row in the table tbl_
.
LOAD DATA INFILE 'filename'INTO TABLE tbl_name(singlestore_col_name <- %)FORMAT JSON;
Remarks
-
To specify the compression type of an input file, use the
COMPRESSION
clause.See LOAD DATA for more information. -
The file named by
file_
must consist of concatenated UTF-8 encoded JSON values, optionally separated by whitespace.name Newline-delimited JSON is accepted, for example. -
Non-standard JSON values like
NaN
,Infinity
, and-Infinity
must not occur infile_
.name -
If
file_
ends inname .
orgz .
, it will be decompressed.lz4 -
JSON
LOAD DATA
supports a subset of the error recovery options allowed by CSVLOAD DATA
.Their behavior is as described under Load CSV Files with LOAD DATA. -
Like CSV
LOAD DATA
, JSONLOAD DATA
allows you to use globbing to load data from multiple files. -
Writing to multiple databases in a transaction is not supported.
-
The engine discards rows that do not match the WHERE clause.
Last modified: September 10, 2025