Guest User

Untitled

a guest
Jan 25th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. # Modify the source and target variables, and run:
  4. # $./transfer table_name
  5.  
  6. # Note that this will only run on the same machine as the target MySQL server machine.
  7.  
  8. SOURCE_MYSQL_HOST=
  9. SOURCE_MYSQL_PORT=
  10. SOURCE_MYSQL_USERNAME=
  11. SOURCE_MYSQL_PASSWORD=
  12. SOURCE_MYSQL_DATABASE=source
  13.  
  14. TARGET_MYSQL_HOST=localhost
  15. TARGET_MYSQL_PORT=3306
  16. TARGET_MYSQL_USERNAME=root
  17. TARGET_MYSQL_PASSWORD=
  18. TARGET_MYSQL_DATABASE=target
  19.  
  20. TABLE=$1
  21. MYSQL_CLI=`which mysql`
  22. SOURCE_CLI="$MYSQL_CLI --host=$SOURCE_MYSQL_HOST --port=$SOURCE_MYSQL_PORT --user=$SOURCE_MYSQL_USERNAME --password=$SOURCE_MYSQL_PASSWORD --database=$SOURCE_MYSQL_DATABASE -BCN"
  23. TARGET_CLI="$MYSQL_CLI --host=$TARGET_MYSQL_HOST --port=$TARGET_MYSQL_PORT --user=$TARGET_MYSQL_USERNAME --password=$TARGET_MYSQL_PASSWORD --database=$TARGET_MYSQL_DATABASE -BCN"
  24.  
  25.  
  26. echo "Recreating table structure for" $TABLE
  27.  
  28. $TARGET_CLI -e "DROP TABLE IF EXISTS $TABLE"
  29. CREATE_SQL=`$SOURCE_CLI -qe "SHOW CREATE TABLE $TABLE" | sed '1s/.*CREATE TABLE/CREATE TABLE/'`
  30. $TARGET_CLI -e "$CREATE_SQL" 1> /dev/null
  31.  
  32. echo "Transferring table" $TABLE
  33. $SOURCE_CLI -qe "SELECT 'Number of records to import:', COUNT(1) FROM $TABLE"
  34. PIPE_FILENAME=$PWD/mysql_pipe.csv
  35. mkfifo $PIPE_FILENAME
  36. $SOURCE_CLI -qe "SELECT * FROM $TABLE" | perl -pe 's/\r/\\r/g;s/(^|\t)NULL(?=\t|$)/\1\\N/g' > $PIPE_FILENAME &
  37. time $TARGET_CLI -qe "LOAD DATA INFILE '$PIPE_FILENAME' INTO TABLE $TABLE FIELDS TERMINATED BY '\t'"
  38. rm $PIPE_FILENAME
  39.  
  40. $TARGET_CLI --batch -e "SELECT 'Number of imported records:', COUNT(1) FROM $TABLE"
Add Comment
Please, Sign In to add comment