Quick and dirty create table DDL generator
currently only for postgresql. some more db create table scripts coming soon if possible.
by Ukjin Yang
HTML
TABLE NAME: <input type="text" id="table" value="example_table"><br>
TABLE COMMENT: <input type="text" id="tcomm" value="example comment"><br>
COLUMN AND COMMENT PAIR AS CSV/TSV FORMAT:<br>
<textarea id="columns" rows="10" cols="60"></textarea><br>
PLEASE USE LOWERCASE WHEN USE POSTGRESQL FOR MATCH IDENTIFIER.<br>
GENERATED SQL BELOW:<br>
<textarea id="out" rows="20" cols="80"></textarea>
JavaScript
!function() {
const $table = document.querySelector('#table'),
$tcomm = document.querySelector('#tcomm'),
$columns = document.querySelector('#columns'),
$out = document.querySelector('#out')
const change = () => {
const cols = []
for (const col of $columns.value.split('\n')) {
if (!col || !col.trim() || col.startsWith('#')) continue
const [c,m] = col.split(/[,\t]+/)
if (!c) continue
cols.push([c, m])
}
const comms = cols.filter(([,c]) => c && c.trim())
$out.textContent = `
CREATE TABLE "${$table.value.trim()}" (
${cols.length ? cols.map(([c]) => `"${c.trim()}" VARCHAR`).join(',\n') : ''}
);
${$tcomm.value ? `COMMENT ON TABLE "${$table.value.trim()}" IS '${$tcomm.value.trim().replaceAll("'", "''")}';` : ''}
${comms.length ? comms.map(([c,m]) => `COMMENT ON COLUMN "${$table.value.trim()}"."${c}" IS '${m.trim().replaceAll("'", "''")}';`).join('\n') : ''}
`.trim() + '\n'
}
[$table, $tcomm, $columns].forEach($ => $.addEventListener('change', change))
$columns.value = [['col1', 'col1 comment'], ['col2', 'col2 comment']].map(a => a.join('\t')).join('\n')
change()
}()