title: mysql2sqlite.sh script is not working as required
body: <p>I am using mysql2sqlite.sh from script <a href="https://gist.github.com/esperlu/943776#file-mysql2sqlite-sh" rel="nofollow">Github</a>  to change my mysql database to sqlite. But the problem i am getting is that in my table the data <strong>'E-001'</strong> gets changed to <strong>'E?001'</strong>.</p>
  
  <p>I have no idea how to modify the script to get the required result. Please help me.</p>
  
  <p>the script is </p>
  
  <pre><code>#!/bin/sh
  
  # Converts a mysqldump file into a Sqlite 3 compatible file. It also extracts the MySQL `KEY xxxxx` from the
  # CREATE block and create them in separate commands _after_ all the INSERTs.
  
  # Awk is choosen because it's fast and portable. You can use gawk, original awk or even the lightning fast mawk.
  # The mysqldump file is traversed only once.
  
  # Usage: $ ./mysql2sqlite mysqldump-opts db-name | sqlite3 database.sqlite
  # Example: $ ./mysql2sqlite --no-data -u root -pMySecretPassWord myDbase | sqlite3 database.sqlite
  
  # Thanks to and @artemyk and @gkuenning for their nice tweaks.
  
  mysqldump --compatible=ansi --skip-extended-insert --compact "$@" | \
  
  awk '
  
  BEGIN {
  FS=",$"
  print "PRAGMA synchronous = OFF;"
  print "PRAGMA journal_mode = MEMORY;"
  print "BEGIN TRANSACTION;"
  }
  
  # CREATE TRIGGER statements have funny commenting. Remember we are in trigger.
  /^\/\*.*CREATE.*TRIGGER/ {
  gsub( /^.*TRIGGER/, "CREATE TRIGGER" )
  print
  inTrigger = 1
  next
  }
  
  # The end of CREATE TRIGGER has a stray comment terminator
  /END \*\/;;/ { gsub( /\*\//, "" ); print; inTrigger = 0; next }
  
  # The rest of triggers just get passed through
  inTrigger != 0 { print; next }
  
  # Skip other comments
  /^\/\*/ { next }
  
  # Print all `INSERT` lines. The single quotes are protected by another single quote.
  /INSERT/ {
  gsub( /\\\047/, "\047\047" )
  gsub(/\\n/, "\n")
  gsub(/\\r/, "\r")
  gsub(/\\"/, "\"")
  gsub(/\\\\/, "\\")
  gsub(/\\\032/, "\032")
  print
  next
  }
  
  # Print the `CREATE` line as is and capture the table name.
  /^CREATE/ {
  print
  if ( match( $0, /\"[^\"]+/ ) ) tableName = substr( $0, RSTART+1, RLENGTH-1 )
  }
  
  # Replace `FULLTEXT KEY` or any other `XXXXX KEY` except PRIMARY by `KEY`
  /^ [^"]+KEY/ &amp;&amp; !/^ PRIMARY KEY/ { gsub( /.+KEY/, " KEY" ) }
  
  # Get rid of field lengths in KEY lines
  / KEY/ { gsub(/\([0-9]+\)/, "") }
  
  # Print all fields definition lines except the `KEY` lines.
  /^ / &amp;&amp; !/^( KEY|\);)/ {
  gsub( /AUTO_INCREMENT|auto_increment/, "" )
  gsub( /(CHARACTER SET|character set) [^ ]+ /, "" )
  gsub( /DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP|default current_timestamp on update current_timestamp/, "" )
  gsub( /(COLLATE|collate) [^ ]+ /, "" )
  gsub(/(ENUM|enum)[^)]+\)/, "text ")
  gsub(/(SET|set)\([^)]+\)/, "text ")
  gsub(/UNSIGNED|unsigned/, "")
  if (prev) print prev ","
  prev = $1
  }
  
  # `KEY` lines are extracted from the `CREATE` block and stored in array for later print
  # in a separate `CREATE KEY` command. The index name is prefixed by the table name to
  # avoid a sqlite error for duplicate index name.
  /^( KEY|\);)/ {
  if (prev) print prev
  prev=""
  if ($0 == ");"){
  print
  } else {
  if ( match( $0, /\"[^"]+/ ) ) indexName = substr( $0, RSTART+1, RLENGTH-1 )
  if ( match( $0, /\([^()]+/ ) ) indexKey = substr( $0, RSTART+1, RLENGTH-1 )
  key[tableName]=key[tableName] "CREATE INDEX \"" tableName "_" indexName "\" ON \"" tableName "\" (" indexKey ");\n"
  }
  }
  
  # Print all `KEY` creation lines.
  END {
  for (table in key) printf key[table]
  print "END TRANSACTION;"
  }
  '
  exit 0
  </code></pre>