Skip to content

Instantly share code, notes, and snippets.

@empiricalthought
Created August 21, 2012 15:09
Show Gist options
  • Save empiricalthought/3416347 to your computer and use it in GitHub Desktop.
Save empiricalthought/3416347 to your computer and use it in GitHub Desktop.
Awk script to generate SQL inserts from tab file
#!/usr/bin/gawk -f
BEGIN {
if (!table) {
print "usage: generate_insert_statements.awk -v table=TARGET_TABLE_NAME [datafiles ...]" > "/dev/stderr"
failed = 1
exit 1
}
FS = FS ? FS : "\t"
freq = freq ? freq : 100
}
NR == 1 {
column_count = split($0, columns)
insert_clause = "INSERT INTO " table " ("
for (i = 1; i < column_count; i++)
insert_clause = insert_clause columns[i] ", "
insert_clause = insert_clause columns[i] ") VALUES "
print "START TRANSACTION;"
}
NR > 1 {
values_clause = length($1) ? "('" $1 "'" : "NULL"
for (i = 2; i <= column_count; i++) {
value = length($i) ? "'" $i "'" : "NULL"
values_clause = values_clause ", " value
}
values_clause = values_clause ");"
print insert_clause values_clause
}
NR % freq == 0 {
print "COMMIT;"
print "START TRANSACTION;"
}
END {
if (!failed)
print "COMMIT;"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment