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:
EVL | PostgreSQL |
---|---|
char | "CHAR" |
uchar | BOOLEAN |
short | SMALLINT |
ushort | SMALLSERIAL |
int | INTEGER |
uint | SERIAL |
long | BIGINT |
ulong | BIGSERIAL |
int128 | NUMERIC(38,0) |
utint128 | NUMERIC(38,0) |
float | REAL |
double | DOUBLE PRECISION |
decimal(m,n) | NUMERIC(m,n) |
string | TEXT |
ustring | TEXT |
date | DATE |
time | TIME |
interval | INTERVAL |
datetime | TIMESTAMP(0) |
timestamp | TIMESTAMP(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
- 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 );