This topic shows the different ways to export query results as a CSV file with JSON syntax.
This topic contains the following sections:
- 
Review the following: 
            Use the following SELECT INTO
            JSON syntax to export the query results into a CSV file.
          
SELECT ... INTO OUTFILE WITH PARAMETERS
'file_URI_JSON "file":
  begin-array ("uri": "OCIFS_URI") | ("uri": "PAR_URI") | ("uri": "NATIVE_URI"),
  [, "dialect": begin-object dialect_option [, dialect_option]... end-object ]
end-object'
  
'begin-object_PAR_JSON "file": 
  begin-array "par": "par_url" [, "prefix": "prefix_value" ] end-array 
  [, "dialect": begin-object dialect_option [, dialect_option]... end-object ]
end-object'
  
'begin-object_RP_JSON "file": 
  begin-array "bucket": "bucket_name" [, "prefix": "prefix_value" [, "namespace: "namespace_name" ] [,"region": "region_name" ] ] end-array 
  [,"dialect": begin-object dialect_option [, dialect_option]... end-object ]
end-object'
dialect_option_key_value:
  {
    {"format": "csv" } 
    | {"field_delimiter": ","} 
    | {"record_delimiter": "\\n"}
    | {"encoding": "utf8mb4"} 
    | {"escape_character": "\\"} 
    | {"quotation_marks": "\""}
    | {"null_value": "\\N"} 
    | {"has_header": {true | false} }
    | {"compression": {"uncompressed" | "snappy" | "gzip" | "brotli" | "zstd" | "lz4"} }
  }Supported as of MySQL 9.3.1. The following parameters are included in the JSON syntax to export the query results to the Object Storage location represented as a URI.
- 
URI: The Object Storage location is represented as a URI link. The URI must be a prefix URI and end in an unencoded/character.You can specify the following types of URIs. - 
OCIFS Syntax: oci://bucket_name@namespace_name/object_pathExample: oci://bucket_1@tenant_1/data_files/
- 
PAR URI Syntax. You can use one of the following formats: https://namespace_name.objectstorage.region_name.oci.customer-oci.com/p/PAR_token/n/namespace_name/b/bucket_name/o/object_pathhttps://objectstorage.region_name.oraclecloud.com/p/PAR_token/n/namespace_name/b/bucket_name/o/object_pathExample: https://tenant_1.objectstorage.us-ashburn-1.oci.customer-oci.com/p/.../n/tenant_1/b/bucket_1/o/data_files/
- 
Native URI Syntax. You can use one of the following formats: https://namespace_name.objectstorage.region_name.oci.customer-oci.com/n/namespace_name/b/bucket_name/o/object_pathhttps://objectstorage.region_name.oraclecloud.com/n/namespace_name/b/bucket_name/o/object_pathExample: https://tenant_1.objectstorage.us-ashburn-1.oci.customer-oci.com/n/tenant_1/b/bucket_1/o/data_files/
 
- 
- dialect: The dialect parameters assist you to organize the data in the exported- CSVfile.
The following parameters are included in the JSON syntax to export the query results to the Object Storage location represented as a PAR URL.
- 
URI: You can use a PAR URL to access Object Storage. Learn more about Pre-Authenticated Request Requirements to export query results. To learn more about PARs, see Object Storage Pre-Authenticated Requests in Oracle Cloud Infrastructure Documentation.For security reasons, the PAR URL is hidden in the log file. For more information and samples, see Redacted PAR URLs in Exported Log Files. 
- dialect: The dialect parameters assist you to organize the data in the exported- CSVfile.
The following parameters are included in the JSON syntax to export the query results to the Object Storage location based on the assigned resource principal.
- bucket: The bucket name.
- prefix: The directory located within the bucket to store the export query results. This is an optional parameter.
- namespace: The tenancy namespace.
- region: The region that the tenancy is in.
- dialect: The dialect parameters assist you to organize the data in the exported- CSVfile.
            The dialect parameters help you to
            structure the export query results data in the exported
            CSV file. The dialect
            parameters are applicable when you export the query results
            using JSON syntax. These parameters are
            based on the
            dialect
            parameters required to create the external table.
          
            You can use the following dialect
            parameters to export the query results to
            CSV files.
          
- format: The file format to export the query results. Export the query results as a- csv,- parquet, or- json(As of MySQL 9.3.1) file. By default, the results are exported to a- csvfile.
- has_header: Specify if the CSV file has a header row. The default is- false.
- null_value: Represents a string as a null value. The supported null values are- "NULL"and- "\\N".
- compression: The file compression type for CSV format. The supported compression types are- uncompressed,- snappy,- gzip,- brotli,- zstdand- lz4(as supported by the Lakehouse load). By default, the- compressiontype is set to- snappy.
- field_delimiter: Defines a single character to enclose fields. The delimiter for CSV format is- ",". This parameter only supports single character values.
- record_delimiter: Defines one or more characters to delimit records. The maximum field delimiter length is 64 characters. The default is- "\\n".
- encoding: Encoding is ignored with a warning for export. The default is- utf8mb4.
- escape_character: The escape character to ignore with a warning for export. The default is- "\\".
- quotation_marks: The quotation marks to ignore with a warning for export. The default is- "\"".
The following example uses an OCIFS URI to export query results. It uses default delimiters and specifies a header row in the file.
SELECT * FROM example
INTO OUTFILE WITH PARAMETERS
'{"file":[{
     "uri":"oci://bucket_1@tenancy1/data_files_1/"}], 
     "dialect": 
               {"has_header": true, 
                "format": "csv"}
}';The following example uses a PAR URL to export query results. It uses default delimiters and specifies a header row in the file.
SELECT * FROM example
INTO OUTFILE WITH PARAMETERS
'{"file":[{
     "par":"https://objectstorage.region1.oraclecloud.com/p/1P4yKjnwXLEPh9Ol0Fbg2r81tvgJfh0XRcCcsr45ggh7uu_t_X302Ea-WdYffl5CL1ON/n/tenancy1/b/usr-bucket/o/", "prefix":"summary/2025"}], 
     "dialect": 
               {"has_header": true, 
                "format": "csv"}
}';
            The following example uses resource principals to export
            query results as a CSV file. No dialect
            parameters are defined, so default values are used.
          
SELECT sum(l_quantity) from lineitem limit 1000
INTO OUTFILE WITH PARAMETERS
'{"file":[{"region": "region1", 
           "namespace": "org_namespace", 
           "bucket": "usr-bucket",
           "prefix": "export/summary/"}]
}';
            The following example uses resource principals to export
            query results as a CSV file. A header row
            is defined in the file.
          
SELECT sum(l_quantity) from lineitem limit 1000
INTO OUTFILE WITH PARAMETERS
'{"file":[{"region": "region1", 
           "namespace": "org_namespace", 
           "bucket": "usr-bucket",
           "prefix": "export/summary/"}]
           "dialect": {"has_header": true, "format": "csv"}
}';- 
Review the following: