Smart Processes Management
PostgreSQL executor for Runnerty:
Through NPM
npm i @runnerty/executor-postgres
You can also add modules to your project with runnerty-cli
npx runnerty-cli add @runnerty/executor-postgres
This command installs the module in your project, adds example configuration in your config.json
and creates an example plan of use.
If you have installed runnerty-cli globally you can include the module with this command:
rty add @runnerty/executor-postgres
Add in config.json:
{
"id": "postgres_default",
"type": "@runnerty-executor-postgres",
"user": "postgresusr",
"password": "postgrespass",
"database": "MYDB",
"host": "myhost.com",
"port": "5432"
}
{
"id": "postgres_default",
"type": "@runnerty-executor-postgres",
"user": "postgresusr",
"password": "postgrespass",
"database": "MYDB",
"host": "myhost.com",
"port": "5432",
"ssl": {
"ca": "./ssl/my.ca"
}
}
Parameter | Description |
---|---|
user | The postgres user to authenticate as. |
password | The password of that postgres user. |
database | Name of the database to use for this connection. (Optional) |
host | The hostname of the database you are connecting to. |
port | The port number to connect to. (Default: 3306) |
encoding | The encoding for the connection. (Default: 'utf8') |
application_name | (Default: runnerty) |
connectionTimeoutMillis | (Default: 60000) |
query_timeout | (Default: false) |
statement_timeout | (Default: false) |
idle_in_transaction_session_timeout | (Default: false) |
keepAlive | (Default: false) |
keepAliveInitialDelayMillis | (Default: 0) |
ssl/ca | SSL CA File (Optional) |
ssl/cert | SSL CERT File (Optional) |
ssl/key | SSL KEY File (Optional) |
Add in plan.json:
{
"id": "postgres_default",
"command_file": "./sql/test.sql"
}
{
"id": "postgres_default",
"command": "SELECT * FROM generate_series(1,10)"
}
The saved can be indicated in the file of the results obtained from a query in csv, xlsx and json format. These files will be generated with streams. You only have to indicate the corresponding property in the parameters:
XLSX Format
Parameter | Description |
---|---|
xlsxFileExport | Path of xlsx file export. |
xlsxAuthorName | Author file name. (Optional) |
xlsxSheetName | Name of the sheet. (Optional) |
Sample:
{
"id": "postgres_default",
"command": "SELECT * FROM USERS",
"xlsxFileExport": "./my_output.xlsx",
"xlsxAuthorName": "Runnerty",
"xlsxSheetName": "MySheetSample"
}
CSV Format
Parameter | Description |
---|---|
csvFileExport | Path of csv file export. |
csvOptions/headers | Type: boolean/string[]. The headers will be auto detected from the first row or you can to provide headers array: ['h1name','h2name',...]. |
csvOptions/delimiter | Alternate delimiter. (Default: ',') |
csvOptions/quote | Alternate quote. (Default: '"') |
csvOptions/alwaysWriteHeaders | Set to true if you always want headers written, even if no rows are written. (Default: false) |
csvOptions/rowDelimiter | Specify an alternate row delimiter (i.e \r\n). (Default: '\n') |
csvOptions/quoteHeaders | If true then all headers will be quoted. (Default: quoteColumns value) |
csvOptions/quoteColumns | If true then columns and headers will be quoted (unless quoteHeaders is specified). (Default: false). More info here. |
csvOptions/escape | Alternate escaping value. (Default: '"') |
csvOptions/includeEndRowDelimiter | Set to true to include a row delimiter at the end of the csv. (Default: false) |
csvOptions/writeBOM | Set to true if you want the first character written to the stream to be a utf-8 BOM character. (Default: false) |
Sample:
{
"id": "postgres_default",
"command": "SELECT * FROM USERS",
"csvFileExport": "@GV(WORK_DIR)/users.csv",
"csvOptions": {
"delimiter": ";",
"quote": "\""
}
}
JSON Format
Sample:
{
"id": "postgres_default",
"command": "SELECT * FROM USERS",
"jsonfileExport": "@GV(WORK_DIR)/users.json"
}
Plain File Format
For very large data exports it is recommended to use COPY TO
with fileExport
instead of csvFileExport
, despite being developed on streams, it can save the work of converting to CSV.
Sample:
{
"id": "postgres_default",
"command": "COPY persons TO STDOUT DELIMITER ';' CSV HEADER QUOTE '\"';",
"fileExport": "./users.csv"
}
For file upload you must indicate the path of the file to be loaded in the localInFile
parameter and in the COPY [...] FROM
statement you must indicate STDIN
. For example:
localInFile
: CSV file path
{
"id": "postgres_default",
"command": "COPY persons (first_name,last_name,email) FROM STDIN DELIMITER ';' CSV HEADER QUOTE '\"';",
"localInFile": "/persons_to_import.csv"
}
PROCESS_EXEC_MSG_OUTPUT
: postgres output message.PROCESS_EXEC_ERR_OUTPUT
: Error output message.
PROCESS_EXEC_DATA_OUTPUT
: postgres query output data.PROCESS_EXEC_DB_COUNTROWS
: postgres query count rows.PROCESS_EXEC_DB_FIRSTROW
: postgres query first row data.PROCESS_EXEC_DB_FIRSTROW_[FILED_NAME]
: postgres first row field data.