civis.io.csv_to_civis¶
-
civis.io.
csv_to_civis
(filename, database, table, api_key=None, client=None, max_errors=None, existing_table_rows='fail', diststyle=None, distkey=None, sortkey1=None, sortkey2=None, table_columns=None, delimiter=', ', headers=None, primary_keys=None, last_modified_keys=None, escaped=False, execution='immediate', credential_id=None, polling_interval=None, archive=False, hidden=True)[source]¶ Upload the contents of a local CSV file to Civis.
Parameters: - filename : str
Upload the contents of this file.
- database : str or int
Upload data into this database. Can be the database name or ID.
- table : str
The schema and table you want to upload to. E.g.,
'scratch.table'
.- api_key : DEPRECATED str, optional
Your Civis API key. If not given, the
CIVIS_API_KEY
environment variable will be used.- client :
civis.APIClient
, optional If not provided, an
civis.APIClient
object will be created from theCIVIS_API_KEY
.- max_errors : int, optional
The maximum number of rows with errors to remove from the import before failing.
- existing_table_rows : str, optional
The behaviour if a table with the requested name already exists. One of
'fail'
,'truncate'
,'append'
,'drop'
, or'upsert'
. Defaults to'fail'
.- diststyle : str, optional
The distribution style for the table. One of
'even'
,'all'
or'key'
.- distkey : str, optional
The column to use as the distkey for the table.
- sortkey1 : str, optional
The column to use as the sortkey for the table.
- sortkey2 : str, optional
The second column in a compound sortkey for the table.
- table_columns : list[Dict[str, str]], optional
A list of dictionaries corresponding to the columns in the source file. Each dictionary should have keys for column “name” and “sqlType”. The import will only copy these columns regardless if there are more columns in the table.
- delimiter : string, optional
The column delimiter. One of
','
,'\t'
or'|'
.- headers : bool, optional
Whether or not the first row of the file should be treated as headers. The default,
None
, attempts to autodetect whether or not the first row contains headers.- primary_keys: list[str], optional
A list of the primary key column(s) of the destination table that uniquely identify a record. These columns must not contain null values. If existing_table_rows is “upsert”, this field is required. Note that this is true regardless of whether the destination database itself requires a primary key.
- last_modified_keys: list[str], optional
A list of the columns indicating a record has been updated. If existing_table_rows is “upsert”, this field is required.
- escaped: bool, optional
A boolean value indicating whether or not the source file has quotes escaped with a backslash. Defaults to false.
- execution: string, optional, default “immediate”
One of “delayed” or “immediate”. If “immediate”, refresh column statistics as part of the run. If “delayed”, flag the table for a deferred statistics update; column statistics may not be available for up to 24 hours. In addition, if existing_table_rows is “upsert”, delayed executions move data from staging table to final table after a brief delay, in order to accommodate multiple concurrent imports to the same destination table.
- credential_id : str or int, optional
The ID of the database credential. If
None
, the default credential will be used.- polling_interval : int or float, optional
Number of seconds to wait between checks for job completion.
- archive : bool, optional (deprecated)
If
True
, archive the import job as soon as it completes.- hidden : bool, optional
If
True
(the default), this job will not appear in the Civis UI.
Returns: - results :
CivisFuture
A CivisFuture object.
Notes
This reads the contents of filename into memory.
Examples
>>> with open('input_file.csv', 'w') as _input: ... _input.write('a,b,c\n1,2,3') >>> fut = civis.io.csv_to_civis('input_file.csv', ... 'my-database', ... 'scratch.my_data') >>> fut.result()