/insert/records

URL: http://<db.host>:<db.port>/insert/records

Adds multiple records to the specified table. The operation is synchronous, meaning that a response will not be returned until all the records are fully inserted and available. The response payload provides the counts of the number of records actually inserted and/or updated, and can provide the unique identifier of each added record.

The input parameter options parameter can be used to customize this function's behavior.

The update_on_existing_pk option specifies the record collision policy for inserting into a table with a primary key, but is ignored if no primary key exists.

The return_record_ids option indicates that the database should return the unique identifiers of inserted records.

Input Parameter Description

Name Type Description
table_name string Name of table to which the records are to be added, in [schema_name.]table_name format, using standard name resolution rules. Must be an existing table.
list array of bytes An array of binary-encoded data for the records to be added. All records must be of the same type as that of the table. Empty array if input parameter list_encoding is json.
list_str array of strings An array of JSON encoded data for the records to be added. All records must be of the same type as that of the table. Empty array if input parameter list_encoding is binary.
list_encoding string

The encoding of the records to be inserted. The default value is binary. The supported values are:

  • binary
  • json
options map of string to strings

Optional parameters. The default value is an empty map ( {} ).

Supported Parameters (keys) Parameter Description
update_on_existing_pk

Specifies the record collision policy for inserting into a table with a primary key. If set to true, any existing table record with primary key values that match those of a record being inserted will be replaced by that new record (the new data will be "upserted"). If set to false, any existing table record with primary key values that match those of a record being inserted will remain unchanged, while the new record will be rejected and the error handled as determined by ignore_existing_pk, allow_partial_batch, & return_individual_errors. If the specified table does not have a primary key, then this option has no effect. The default value is false.

Supported Values Description
true Upsert new records when primary keys match existing records
false Reject new records when primary keys match existing records
ignore_existing_pk

Specifies the record collision error-suppression policy for inserting into a table with a primary key, only used when not in upsert mode (upsert mode is disabled when update_on_existing_pk is false). If set to true, any record being inserted that is rejected for having primary key values that match those of an existing table record will be ignored with no error generated. If false, the rejection of any record for having primary key values matching an existing record will result in an error being reported, as determined by allow_partial_batch & return_individual_errors. If the specified table does not have a primary key or if upsert mode is in effect (update_on_existing_pk is true), then this option has no effect. The default value is false.

Supported Values Description
true Ignore new records whose primary key values collide with those of existing records
false Treat as errors any new records whose primary key values collide with those of existing records
return_record_ids

If true then return the internal record id along for each inserted record. The default value is false. The supported values are:

  • true
  • false
truncate_strings

If set to true, any strings which are too long for their target charN string columns will be truncated to fit. The default value is false. The supported values are:

  • true
  • false
return_individual_errors

If set to true, success will always be returned, and any errors found will be included in the info map. The "bad_record_indices" entry is a comma-separated list of bad records (0-based). And if so, there will also be an "error_N" entry for each record with an error, where N is the index (0-based). The default value is false. The supported values are:

  • true
  • false
allow_partial_batch

If set to true, all correct records will be inserted and incorrect records will be rejected and reported. Otherwise, the entire batch will be rejected if any records are incorrect. The default value is false. The supported values are:

  • true
  • false
dry_run

If set to true, no data will be saved and any errors will be returned. The default value is false. The supported values are:

  • true
  • false

Output Parameter Description

The GPUdb server embeds the endpoint response inside a standard response structure which contains status information and the actual response to the query. Here is a description of the various fields of the wrapper:

Name Type Description
status String 'OK' or 'ERROR'
message String Empty if success or an error message
data_type String 'insert_records_response' or 'none' in case of an error
data String Empty string
data_str JSON or String

This embedded JSON represents the result of the /insert/records endpoint:

Name Type Description
record_ids array of strings An array containing the IDs with which the added records are identified internally.
count_inserted int The number of records inserted.
count_updated int The number of records updated.
info map of string to strings

Additional information.

Possible Parameters (keys) Parameter Description
bad_record_indices If return_individual_errors option is specified or implied, returns a comma-separated list of invalid indices (0-based)
error_N Error message for record at index N (0-based)

Empty string in case of an error.