Advertisement
Guest User

Untitled

a guest
Jan 21st, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # convert a database from MySQL to SQLite
  4.  
  5. echo -ne "Database: "
  6. read db
  7. echo -ne "User: "
  8. read user
  9. echo -ne "Password: "
  10. read -s pw
  11. echo ""
  12.  
  13. # remove files from previous runs
  14. rm -f $db.sql $db.sqlite $db.db $db.err
  15.  
  16. echo "Dumping MySQL DB \"$db\" to file $db.sql..."
  17. mysqldump -u $user -p$pw --compatible=ansi --skip-opt --default-character-set=utf8 $db > $db.sql || exit 10
  18.  
  19. echo "Converting SQL dump ($db.sql) to SQLite dump ($db.sqlite)..."
  20. cat $db.sql |
  21. grep -v ' KEY "' |
  22. grep -v ' UNIQUE KEY "' |
  23. grep -v ' PRIMARY KEY ' |
  24. sed '/^SET/d' |
  25. sed 's/ unsigned / /gI' |
  26. sed 's/ auto_increment/ primary key autoincrement/gI' |
  27. sed 's/ smallint([0-9]*) / integer /gI' |
  28. sed 's/ tinyint([0-9]*) / integer /gI' |
  29. sed 's/ int([0-9]*) / integer /gI' |
  30. sed 's/ enum([^)]*) / varchar(255) /gI' |
  31. sed 's/ on update [^,]*//gI' |
  32. sed 's/\\r\\n/\\n/g' |
  33. sed 's/\\"/"/g' |
  34. sed -r 's/ character set [^, ]* ?/ /gI' |
  35. sed -r 's/ collate [^, ]* ?/ /gI' |
  36. perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
  37. perl -pe '
  38. if (/^(INSERT.+?)\(/) {
  39. $a=$db;
  40. s/\\'\''/'\'\''/g;
  41. s/\\'\'\','/'\','/g;
  42. s/\\n/\n/g;
  43. s/\),\(/\);\n$a\(/g;
  44. }
  45. ' > $db.sqlite
  46.  
  47. echo "Importing SQLite dump to $db.db..."
  48. cat $db.sqlite | sqlite3 $db.db 2> $db.err
  49. ERRORS=`cat $db.err | wc -l`
  50. if [ $ERRORS == 0 ]; then
  51. echo "Conversion completed without errors. Output file: $db.db"
  52. rm -f $db.sql $db.sqlite $db.err
  53. else
  54. echo "There were errors during conversion. Please review $db.err and $db.sqlite for details."
  55. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement