Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/conv.sh
diff options
context:
space:
mode:
Diffstat (limited to 'conv.sh')
-rw-r--r--conv.sh43
1 files changed, 43 insertions, 0 deletions
diff --git a/conv.sh b/conv.sh
new file mode 100644
index 0000000..8f8a9f4
--- /dev/null
+++ b/conv.sh
@@ -0,0 +1,43 @@
+ #!/bin/sh
+
+ if [ "x$1" == "x" ]; then
+ echo "Usage: $0 <dbname>"
+ exit
+ fi
+
+ if [ -e "$1.db" ]; then
+ echo "$1.db already exists. I will overwrite it in 15 seconds if you do not press CTRL-C."
+ rm $1.db
+ fi
+
+ mysqldump -h 10.250.100.69 -u assim -p --compact --compatible=ansi --default-character-set=binary $1 |
+ grep -v ' KEY "' |
+ grep -v ' UNIQUE KEY "' |
+ grep -v ' PRIMARY KEY ' |
+ sed 's/ unsigned / /g' |
+ sed 's/ auto_increment/ primary key autoincrement/gi' |
+ sed 's/ smallint([0-9]*) / integer /gi' |
+ sed 's/ tinyint([0-9]*) / integer /gi' |
+ sed 's/ int([0-9]*) / integer /gi' |
+ sed 's/ character set [^ ]* / /gi' |
+ sed 's/ enum([^)]*) / varchar(255) /gi' |
+ sed 's/ on update [^,]*//gi' |
+ perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
+ perl -pe '
+ if (/^(INSERT.+?)\(/) {
+ $a=$1;
+ s/\\'\''/'\'\''/g;
+ s/\\n/\n/g;
+ s/\),\(/\);\n$a\(/g;
+ }
+ ' > $1.sql
+ cat $1.sql | sqlite3 $1.db > $1.err
+ ERRORS=`cat $1.err | wc -l`
+ if [ "$ERRORS" == "0" ]; then
+ echo "Conversion completed without error. Output file: $1.db"
+ rm $1.sql
+ rm $1.err
+ else
+ echo "There were errors during conversion. Please review $1.err and $1.sql for details."
+ fi
+