EVL – ETL Tool


Products, services and company names referenced in this document may be either trademarks or registered trademarks of their respective owners.

Copyright © 2017–2023 EVL Tool, s.r.o.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.

Table of Contents

evd2sql

(since EVL 2.6)

Read the EVL data definition (a.k.a. EVD) from <table.evd> and write to standard output (or to <table.sql> if ‘--output’ is used) ‘CREATE TABLE’ statement specific for given SQL dialect: ANSI, PostgreSQL, Redshift, etc.

When more then one <table.evd> files specified, then write to ‘*.sql’ files named accordingly with the same basename.

The SQL statement looks like this in general:

CREATE TABLE [IF NOT EXISTS] ["<schema_name>".]"<table_name>" (
    <column_1_based_on_evd>
  , <column_2_based_on_evd>
  , <column_3_based_on_evd>
  , ...
[<table_constraints>]
)
[<table_attributes>]
;

EVL data types mapping:

EVLPostgreSQL
char"CHAR"
ucharBOOLEAN
shortSMALLINT
ushortSMALLSERIAL
intINTEGER
uintSERIAL
longBIGINT
ulongBIGSERIAL
int128NUMERIC(38,0)
utint128NUMERIC(38,0)
floatREAL
doubleDOUBLE PRECISION
decimal(m,n)NUMERIC(m,n)
stringTEXT
ustringTEXT
dateDATE
timeTIME
intervalINTERVAL
datetimeTIMESTAMP(0)
timestampTIMESTAMP(6)

Synopsis

evd2sql
  ( <table.evd>... | -i|--input <table.evd> )
  [-d|--sql-dialect <database> ]
  [--if-not-exists]
  [-o|--output ( <table.sql> | <target_dir> ) ]
  [-s|--schema <schema_name>]
  [-t|--table <table_name>]
  [--table-attributes <table_attributes>]
  [--table-constraints <table_constraints>]
  [--varchar <length>]
  [-v|--verbose]

evd2sql
  ( --help | --usage | --version )

Options

-d, --sql-dialect=<database>

currently these SQL types are supported:

ansi (default)
postgres
redshift
--if-not-exists

use ‘CREATE TABLE IF NOT EXISTS’ instead of default ‘CREATE TABLE

-i, --input=<table.evd>

read file <table.evd>

-o, --output=<path>

if <path> is an existing directory, it writes output there. If it is not a directory, it is considered as an output file name.

-s, --schema=<schema_name>

add <schema_name> to table name

-t, --table=<table_name>

by default basename of <table.evd> from ‘--input’ option is used as table name in ‘CREATE TABLE’ statement, this option can overwrite it. When reading EVD from standard input, this option is recommended, otherwise table name will be empty

--table-attributes=<table_attributes>

string to be added right after closing bracket, e.g. for Redshift it might be ‘SORTKEY (some_id,other_col)

--table-constraints=<table_constraints>

string to be added right after column list, e.g. ‘, PRIMARY KEY (some_id)

--varchar=<length>

specify the default VARCHAR length, default is 256

-v, --verbose

print to STDERR info/debug messages

--help

print this help and exit

--usage

print short usage information and exit

--version

print version and exit

Examples

  1. Having an EVD file ‘some.evd’:
    id       int             sep=";"
    started  date    null="" sep=";"
    value    string  null="" sep="\n"
    

    This command:

    evd2sql -s postgres -i some.evd --if-not-exists
    

    will produce:

    CREATE TABLE IF NOT EXISTS "some" (
        id      INTEGER NOT NULL
      , started DATE
      , value   TEXT
    );