#!/bin/bash # # * Copyright (C) 2007 - 2015 Hyperweb2 All rights reserved. # * GNU General Public License version 3; see www.hyperweb2.com/terms/ echo "starting import process.." # check config from same folder and include only if exists CONF_FILE=$MT_DIR"/mysql-config" if [ -f "$CONF_FILE" ]; then source "$CONF_FILE" fi; #overwrite configs if file exists and variables are defined if [ ! -z "$4" ]; then if [ -e "$4" ]; then source "$4" else # if 4th parameter is not a file, then try to eval eval "$4" fi; fi; source $MT_DIR"/shared-def" if [ ! -z "$1" ]; then MYSQL_DB=$1; fi # Table prefix ( to implement ) PFX= # par 1 : db_name function checkdb { # Check if database exists err=`echo "quit" | $(eval "$MYSQL$OPTS '$1'") 2>&1` if [ $? != 0 ]; then if echo "$err" | grep -q "Access denied"; then echo -e "\nDATABASE $1 EXISTS BUT USER $MYSQL_USER DOES NOT HAVE ACCESS TO IT, ABORTING" exit fi echo -n "[creating $1]" if ! echo "CREATE DATABASE $1;" | $(eval "$MYSQL$OPTS" ) 2>/dev/null ; then echo -e "\nDATABASE $1 DOES NOT EXIST AND I FAILED TO CREATE IT, ABORTING" exit fi fi } #par1: is_text_file ; par2: file function import { echo "Importing $2 into $MYSQL_DB (text: $1) ..." SQL="SET FOREIGN_KEY_CHECKS = 0;" #eval "$MYSQL$OPTS -e \"SET FOREIGN_KEY_CHECKS = 0\" '$MYSQL_DB'" #disable foreign check FILE=$2 if (($1 != 0)); then #eval "$MYSQLIMPORT$OPTS $IMPORTOPTS_TEXT '$MYSQL_DB' $2" TABLE=${FILE##*/} TABLE=${TABLE%.txt} SQL+="LOAD DATA LOCAL INFILE '$2' INTO TABLE $MYSQL_DB.$TABLE;" else #eval "$MYSQL$OPTS '$MYSQL_DB'" < "$2" SQL+="SOURCE $2;" fi #eval "$MYSQL$OPTS -e \"SET FOREIGN_KEY_CHECKS = 1\" '$MYSQL_DB'" #enable foreign check SQL+="SET FOREIGN_KEY_CHECKS = 1"; eval "$MYSQL$OPTS -e \"$SQL\" '$MYSQL_DB'" echo " done" } if [ ! -z "$1" ]; then DB=$1; fi checkdb $MYSQL_DB if [ ! -z "$2" ]; then tables=$(echo $2 | tr "," "\n") fi if [ ! -z "$3" ]; then FULL=$3; fi if (($FULL != 0)); then echo "importing full world file" $(eval "$MYSQL$OPTS '$MYSQL_DB'") < $FPATH else if [ ! -z "$2" ]; then import "0" "$TPATH/$2.sql" # TODO we should check if it's a set of tables before if (($TEXTDUMPS != 0)); then for x in $TPATH/*.txt; do import "1" "$x" done fi else for x in $TPATH/*.sql; do import "0" "$x" done if (($TEXTDUMPS != 0)); then for x in $TPATH/*.txt; do import "1" "$x" done fi fi fi