Revision 1920
Added by Aaron Marcuse-Kubitza almost 13 years ago
bin/csv2ddl | ||
---|---|---|
1 |
#!/usr/bin/env python |
|
2 |
# Makes a PostgreSQL CREATE TABLE statement from a CSV header |
|
3 |
|
|
4 |
import csv |
|
5 |
import os.path |
|
6 |
import sys |
|
7 |
|
|
8 |
sys.path.append(os.path.dirname(__file__)+"/../lib") |
|
9 |
|
|
10 |
import csvs |
|
11 |
import opts |
|
12 |
import sql |
|
13 |
|
|
14 |
def esc_name(name): |
|
15 |
return sql.esc_name_by_engine('PostgreSQL', name, preserve_case=True) |
|
16 |
|
|
17 |
def main(): |
|
18 |
# Usage |
|
19 |
env_names = [] |
|
20 |
def usage_err(): |
|
21 |
raise SystemExit('Usage: '+opts.env_usage(env_names)+' '+sys.argv[0] |
|
22 |
+' <header >ddl') |
|
23 |
|
|
24 |
# Get config from env vars |
|
25 |
datasrc = opts.get_env_var('datasrc', None, env_names) |
|
26 |
table = opts.get_env_var('table', None, env_names) |
|
27 |
if datasrc == None or table == None: usage_err() |
|
28 |
|
|
29 |
# Get col names |
|
30 |
reader, col_names = csvs.reader_and_header(sys.stdin) |
|
31 |
|
|
32 |
# Write CREATE TABLE statement |
|
33 |
out = sys.stdout |
|
34 |
out.write('CREATE TABLE '+esc_name(datasrc)+'.'+esc_name(table)+' (\n') |
|
35 |
out.write('row_num serial NOT NULL\n') |
|
36 |
for col_name in col_names: out.write(', '+esc_name(col_name)+' text\n') |
|
37 |
out.write(');\n') |
|
38 |
|
|
39 |
main() |
|
0 | 40 |
Also available in: Unified diff
Added csv2ddl to make a PostgreSQL CREATE TABLE statement from a CSV header