# Using Mapping with JSON files

> **📝 Note**: For more information on the various data sources supported by SingleStore, refer to [Data Sources](https://docs.singlestore.com/db/v9.1/load-data/data-sources.md).

When loading JSON formatted data, a mapping clause should be used. Without this clause, the data mapping will be inferred based on its schema. If a field name is nullable and has not been specified using a mapping clause, a `NULL` value will be returned instead of an error.

Below are a few examples for loading data into a pipeline using mapping.

## Examples

The following examples use a JSON key pair and an array from a local file source.

```sql
CREATE TABLE keypairs(`key` VARCHAR(10), `value` VARCHAR(10)); 
CREATE PIPELINE jtest AS
LOAD DATA FS '<file path>/keypairs.json'
INTO TABLE keypairs
FORMAT JSON(`key` <- keypairs::`key`,`value` <- keypairs::`value`); 

START PIPELINE jtest;

SELECT * FROM keypairs;


```

```output

+------+--------+
| key  | value  | 
+------+--------+
|    1 | 1      |
+------+--------+
```

> **⚠️ Warning**: To use reserved words in a table, backticks are required. The example above uses `key` and `value` as column names by using backticks.

```sql
CREATE TABLE teams(basketball VARCHAR(50), baseball VARCHAR (50), 
football VARCHAR(50), hockey VARCHAR(50));

CREATE PIPELINE teams_list AS
LOAD DATA FS '<file path>/jtinsert.json'
INTO TABLE teams
FORMAT JSON
(basketball <- teams::basketball,
baseball <- teams::baseball,
football <- teams::football,
hockey <- teams::hockey);

START PIPELINE teams_list;

SELECT * FROM teams;

```

```output


+------------+-----------+----------+--------+
| basketball | baseball  | football | hockey |
+------------+-----------+----------+--------+
|  Lakers    | Dodgers   | Raiders  | Kings  |
+------------+-----------+----------+--------+
```

The following examples use a JSON key pair and an array from an S3 bucket.

```sql
CREATE TABLE keypairs(`key` VARCHAR(10), `value` VARCHAR (10));

CREATE PIPELINE jtest AS
LOAD DATA S3 's3://<bucket_name>/<filename>.json'
CONFIG '{"region":"us-west-2"}'
CREDENTIALS '{"aws_access_key_id": "XXXXXXXXXXXXXXXXX",               
              "aws_secret_access_key": "XXXXXXXXXXX"}'
INTO TABLE keypairs
FORMAT JSON
(`key` <- keypairs::`key`,
`value` <- keypairs::`value`);

START PIPELINE jtest;
SELECT * FROM keypairs;

```

```output


+------+--------+
| key  | value  | 
+------+--------+
|    1 | 1      |
+------+--------+
```

```sql
CREATE TABLE teams(basketball varchar(50), baseball varchar (50), 
football varchar(50), hockey varchar(50));

```

Below is the contents of the JSON file used in the pipeline example:

```json
{
	"teams": [{
			"basketball": "Knicks"
		},
		{
			"baseball": "Yankees"
		},
		{
			"football": "Giants"
		},
		{
			"hockey": "Rangers"
		}
	]
}

```

```sql
CREATE PIPELINE teams_list AS 
LOAD DATA S3 's3://<bucket_name>/<filename>.json'
CONFIG '{"region":"us-west-2"}'
CREDENTIALS '{"aws_access_key_id": "XXXXXXXXXXXXXXXXX",               
              "aws_secret_access_key": "XXXXXXXXXXX"}'
INTO TABLE teams
FORMAT JSON
(basketball <- teams::basketball,
baseball <- teams::baseball,
football <- teams::football,
hockey <- teams::hockey);

START PIPELINE teams_list;
SELECT * FROM teams;

```

```output


+------------+-----------+----------+--------+
| basketball | baseball  | football | hockey |
+------------+-----------+----------+--------+
|  Lakers    | Dodgers   | Raiders  | Kings  |
+------------+-----------+----------+--------+
```

***

Modified at: July 25, 2025

Source: [/db/v9.1/load-data/load-data-from-files/load-data-from-json-files/using-mapping-with-json-files/](https://docs.singlestore.com/db/v9.1/load-data/load-data-from-files/load-data-from-json-files/using-mapping-with-json-files/)

(An index of the documentation is available at /llms.txt)
