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
|
schema = opts.get_env_var('schema', None, env_names)
|
26
|
table = opts.get_env_var('table', None, env_names)
|
27
|
if schema == 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(schema)+'.'+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()
|