Skip to content

Instantly share code, notes, and snippets.

@dulao5
Created May 9, 2022 08:19
Show Gist options
  • Save dulao5/91a83daa4a21ff52406b0c430c70e193 to your computer and use it in GitHub Desktop.
Save dulao5/91a83daa4a21ff52406b0c430c70e193 to your computer and use it in GitHub Desktop.
Convert mysql dump file to insert sql for spanner
mysqldump -h 127.0.0.1 -P3307 -uroot -p -B databasename --no-create-db --no-create-info --complete-insert --extended-insert=FALSE --skip-lock-tables > /tmp/insert.sql
gsed -i -e 's/^--.*//' -e 's/^\/\*.*//' -e 's/UNLOCK.*//' -e 's/LOCK TABLES.*//' /tmp/insert.sql
# map file for Convert underscore to PascalCase
egrep '`.*?`' /tmp/insert.sql -o | sort | uniq | gsed -e 's/`//g' > /tmp/mysql-words
cp /tmp/mysql-words /tmp/spanner-words
gsed -i -r 's/(^|_)([a-z])/\U\2/g' /tmp/spanner-words
paste /tmp/mysql-words /tmp/spanner-words > /tmp/map.txt
# sed cmd file
awk '{printf "-e \"s/`%s`/`%s`/g\" \\\n" , $1 , $2}' /tmp/map.txt | gsed -e 's/"/'"'"/g > /tmp/sed.opts.txt
echo 'gsed -i \\' > /tmp/sed.sh
cat /tmp/sed.opts.txt >> /tmp/sed.sh
echo '/tmp/insert.sql' >> /tmp/sed.sh
# replase mysql underscore word to spanner PascalCase
sh -x /tmp/sed.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment