Version:

/insert/records/fromfiles

URL: http://GPUDB_IP_ADDRESS:GPUDB_PORT/insert/records/fromfiles

Reads from one or more files located on the server and inserts the data into a new or existing table.

For CSV files, there are two loading schemes: positional and name-based. The name-based loading scheme is enabled when the file has a header present and text_has_header is set to true. In this scheme, the source file(s) field names must match the target table's column names exactly; however, the source file can have more fields than the target table has columns. If error_handling is set to permissive, the source file can have fewer fields than the target table has columns. If the name-based loading scheme is being used, names matching the file header's names may be provided to columns_to_load instead of numbers, but ranges are not supported.

Returns once all files are processed.

Input Parameter Description

Name Type Description
table_name string Name of the table into which the data will be inserted. If the table does not exist, the table will be created using either an existing type_id or the type inferred from the file.
filepaths array of strings Absolute or relative filepath(s) from where files will be loaded. Relative filepaths are relative to the defined external_files_directory parameter in the server configuration. The filepaths may include wildcards (*). If the first path ends in .tsv, the text delimiter will be defaulted to a tab character. If the first path ends in .psv, the text delimiter will be defaulted to a pipe character (|).
create_table_options map of string to strings

Options used when creating a new table. The default value is an empty map ( {} ).

Supported Parameters (keys) Parameter Description
type_id ID of a currently registered type. The default value is ''.
no_error_if_exists

If true, prevents an error from occurring if the table already exists and is of the given type. If a table with the same ID but a different type exists, it is still an error. The default value is false. The supported values are:

  • true
  • false
collection_name Name of a collection which is to contain the newly created table. If the collection provided is non-existent, the collection will be automatically created. If empty, then the newly created table will be a top-level table.
is_replicated

For a table, affects the distribution scheme for the table's data. If true and the given type has no explicit shard key defined, the table will be replicated. If false, the table will be sharded according to the shard key specified in the given type_id, or randomly sharded, if no shard key is specified. Note that a type containing a shard key cannot be used to create a replicated table. The default value is false. The supported values are:

  • true
  • false
foreign_keys Semicolon-separated list of foreign keys, of the format '(source_column_name [, ...]) references target_table_name(primary_key_column_name [, ...]) [as foreign_key_name]'.
foreign_shard_key Foreign shard key of the format 'source_column references shard_by_column from target_table(primary_key_column)'.
partition_type

Partitioning scheme to use.

Supported Values Description
RANGE Use range partitioning.
INTERVAL Use interval partitioning.
LIST Use list partitioning.
HASH Use hash partitioning.
partition_keys Comma-separated list of partition keys, which are the columns or column expressions by which records will be assigned to partitions defined by partition_definitions.
partition_definitions Comma-separated list of partition definitions, whose format depends on the choice of partition_type. See range partitioning, interval partitioning, list partitioning, or hash partitioning for example formats.
is_automatic_partition

If true, a new partition will be created for values which don't fall into an existing partition. Currently only supported for list partitions. The default value is false. The supported values are:

  • true
  • false
ttl For a table, sets the TTL of the table specified in input parameter table_name.
chunk_size Indicates the number of records per chunk to be used for this table.
is_result_table

For a table, indicates whether the table is an in-memory table. A result table cannot contain store_only, text_search, or string columns (charN columns are acceptable), and it will not be retained if the server is restarted. The default value is false. The supported values are:

  • true
  • false
strategy_definition The tier strategy for the table and its columns. See tier strategy usage for format and tier strategy examples for examples.
options map of string to strings

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

Supported Parameters (keys) Parameter Description
batch_size Specifies number of records to process before inserting.
column_formats For each target column specified, applies the column-property-bound format to the source data loaded into that column. Each column format will contain a mapping of one or more of its column properties to an appropriate format for each property. Currently supported column properties include date, time, & datetime. The parameter value must be formatted as a JSON string of maps of column names to maps of column properties to their corresponding column formats, e.g., { "order_date" : { "date" : "%Y.%m.%d" }, "order_time" : { "time" : "%H:%M:%S" } }. See default_column_formats for valid format syntax.
columns_to_load For delimited_text file_type only. Specifies a comma-delimited list of column positions or names to load instead of loading all columns in the file(s); if more than one file is being loaded, the list of columns will apply to all files. Column numbers can be specified discretely or as a range, e.g., a value of '5,7,1..3' will create a table with the first column in the table being the fifth column in the file, followed by seventh column in the file, then the first column through the fourth column in the file.
default_column_formats Specifies the default format to be applied to source data loaded into columns with the corresponding column property. This default column-property-bound format can be overridden by specifying a column property & format for a given target column in column_formats. For each specified annotation, the format will apply to all columns with that annotation unless a custom column_formats for that annotation is specified. The parameter value must be formatted as a JSON string that is a map of column properties to their respective column formats, e.g., { "date" : "%Y.%m.%d", "time" : "%H:%M:%S" }. Column formats are specified as a string of control characters and plain text. The supported control characters are 'Y', 'm', 'd', 'H', 'M', 'S', and 's', which follow the Linux 'strptime()' specification, as well as 's', which specifies seconds and fractional seconds (though the fractional component will be truncated past milliseconds). Formats for the 'date' annotation must include the 'Y', 'm', and 'd' control characters. Formats for the 'time' annotation must include the 'H', 'M', and either 'S' or 's' (but not both) control characters. Formats for the 'datetime' annotation meet both the 'date' and 'time' control character requirements. For example, '{"datetime" : "%m/%d/%Y %H:%M:%S" }' would be used to interpret text as "05/04/2000 12:12:11"
dry_run

If set to true, no data will be inserted but the file will be read with the applied error_handling mode and the number of valid records that would be normally inserted are returned. The default value is false. The supported values are:

  • false
  • true
error_handling

Specifies how errors should be handled upon insertion. The default value is Permissive.

Supported Values Description
permissive Records with missing columns are populated with nulls if possible; otherwise, the malformed records are skipped.
ignore_bad_records Malformed records are skipped.
abort Stops current insertion and aborts entire operation when an error is encountered.
file_type

File type for the file(s). The default value is delimited_text.

Supported Values Description
delimited_text Indicates the file(s) are in delimited text format, e.g., CSV, TSV, PSV, etc.
loading_mode

Specifies how to divide data loading among nodes. The default value is head.

Supported Values Description
head The head node loads all data. All files must be available on the head node.
distributed_shared The worker nodes coordinate loading a set of files that are available to all of them. All files must be available on all nodes. This option is best when there is a shared file system.
distributed_local Each worker node loads all files that are available to it. This option is best when each worker node has its own file system.
text_comment_string For delimited_text file_type only. All lines in the file(s) starting with the provided string are ignored. The comment string has no effect unless it appears at the beginning of a line. The default value is '#'.
text_delimiter For delimited_text file_type only. Specifies the delimiter for values and columns in the header row (if present). Must be a single character. The default value is ','.
text_escape_character For delimited_text file_type only. The character used in the file(s) to escape certain character sequences in text. For example, the escape character followed by a literal 'n' escapes to a newline character within the field. Can be used within quoted string to escape a quote character. An empty value for this option does not specify an escape character.
text_has_header

For delimited_text file_type only. Indicates whether the delimited text files have a header row. The default value is true. The supported values are:

  • true
  • false
text_header_property_delimiter For delimited_text file_type only. Specifies the delimiter for column properties in the header row (if present). Cannot be set to same value as text_delimiter. The default value is '|'.
text_null_string For delimited_text file_type only. The value in the file(s) to treat as a null value in the database. The default value is ''.
text_quote_character For delimited_text file_type only. The quote character used in the file(s), typically encompassing a field value. The character must appear at beginning and end of field to take effect. Delimiters within quoted fields are not treated as delimiters. Within a quoted field, double quotes (") can be used to escape a single literal quote character. To not have a quote character, specify an empty string (""). The default value is '"'.
truncate_table

If set to true, truncates the table specified by input parameter table_name prior to loading the file(s). The default value is false. The supported values are:

  • true
  • false
num_tasks_per_rank Optional: number of tasks for reading file per rank. Default will be external_file_reader_num_tasks

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_from_files_request' 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/fromfiles endpoint:

Name Type Description
table_name string Value of input parameter table_name.
type_id string Type ID for the table.
count_inserted long Number of records inserted.
count_skipped long Number of records skipped when not running in abort error handling mode.
count_updated long Number of records updated. The default value is -1.
info map of string to strings Additional information.

Empty string in case of an error.