-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGenTable.sh
executable file
·69 lines (62 loc) · 1.52 KB
/
GenTable.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/sh
# SQL stuff
MYSQL_ARGS="--defaults-file=/etc/mysql/debian.cnf"
DB="mbctest"
DELIM=","
NEWLINE="\n"
# Bash stuff
BOLD=$(tput bold)
NORMAL=$(tput sgr0)
TABLE=""
CSV=""
DATABASE="DEFAULT"
while :; do
case $1 in
-h|--help) echo "usage: $0 [-h] [--table name of table to create]
[--csv name of csv to read (must be in /var/lib/mysql-files)]
[--database name of database to create]"; exit ;;
--table)
if [ "$2" ]; then
TABLE=$2
shift
fi ;;
--csv)
if [ "$2" ]; then
CSV="/var/lib/mysql-files/$2"
shift
fi ;;
--database)
if [ "$2" ]; then
DATABASE=$2
shift
fi ;;
--)
shift
break
;;
-?*)
printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2
;;
*)
break
;;
esac
shift
done
echo "Creating table: " $TABLE
echo "Reading .csv: " $CSV
echo "Will create database: " $DATABASE
echo "${BOLD}Need sudo permission to read $CSV${NORMAL}"
FIELDS=$(sudo head -1 "$CSV" | sed -e 's/'$DELIM'/` varchar(1024),\n`/g' -e 's/\r//g')
FIELDS='`'"$FIELDS"'` varchar(8192)'
echo "# script generated by GenTable.sh
USE $DATABASE;
DROP TABLE IF EXISTS $TABLE;
CREATE TABLE $TABLE ($FIELDS);
LOAD DATA INFILE '$CSV' INTO TABLE $TABLE
FIELDS TERMINATED BY '$DELIM'
LINES TERMINATED BY '$NEWLINE'
IGNORE 1 LINES
;" > GenTable.sql
echo "${BOLD}Outputed to './GenTable.sql'${NORMAL}"
#LINES TERMINATED BY "\'/\n\'"