|
|
|
|
|
|
|
|
# https://www.redhat.com/sysadmin/arguments-options-bash-scripts |
|
|
# https://www.redhat.com/sysadmin/arguments-options-bash-scripts |
|
|
|
|
|
|
|
|
############################################################ |
|
|
############################################################ |
|
|
# Subprograms # |
|
|
|
|
|
|
|
|
# subprograms # |
|
|
############################################################ |
|
|
############################################################ |
|
|
License() |
|
|
License() |
|
|
{ |
|
|
{ |
|
|
|
|
|
|
|
|
echo "h Print this Help." |
|
|
echo "h Print this Help." |
|
|
echo "e Export whole database." |
|
|
echo "e Export whole database." |
|
|
echo "i Import whole database." |
|
|
echo "i Import whole database." |
|
|
echo "c Export single table as CSV." |
|
|
|
|
|
echo "v Import CSV file to table." |
|
|
|
|
|
|
|
|
echo "c Export single table as tab-delimited txt." |
|
|
|
|
|
echo "v Import tab-delimited txt file to table." |
|
|
echo |
|
|
echo |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
docker exec -i $CONTAINER mysql -u $USERNAME -p$PASSWORD $DATABASE < $IMPORT_SQL_DIRECTORY/$IMPORT_SQL_FILENAME |
|
|
docker exec -i $CONTAINER mysql -u $USERNAME -p$PASSWORD $DATABASE < $IMPORT_SQL_DIRECTORY/$IMPORT_SQL_FILENAME |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
CSV_table_export() |
|
|
|
|
|
|
|
|
Table_export() |
|
|
{ |
|
|
{ |
|
|
docker exec -it $CONTAINER bash -c "mysql -u $USERNAME -p$PASSWORD $DATABASE --batch -e 'SELECT * FROM $TABLE'" > $EXPORT_CSV_DIRECTORY/$CSV_FILENAME.txt |
|
|
|
|
|
|
|
|
docker exec -it $CONTAINER bash -c "mysql -u $USERNAME -p$PASSWORD $DATABASE --batch -e 'SELECT * FROM $TABLE'" > $EXPORT_TXT_DIRECTORY/$EXPORT_TXT_FILENAME.txt |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
CSV_table_import() |
|
|
|
|
|
|
|
|
Table_import() |
|
|
{ |
|
|
{ |
|
|
docker cp $IMPORT_CSV_FILE $CONTAINER:/tmp/import_file |
|
|
|
|
|
|
|
|
docker cp $IMPORT_TXT_FILE $CONTAINER:/tmp/import_file |
|
|
|
|
|
|
|
|
docker exec -i $CONTAINER bash -c "mysql -u $USERNAME -p$PASSWORD $DATABASE -e 'LOAD DATA LOCAL INFILE '\''/tmp/import_file'\'' REPLACE INTO TABLE $TABLE FIELDS TERMINATED BY '\''\t'\'' LINES TERMINATED BY '\''\n'\'' IGNORE 1 ROWS;'" |
|
|
docker exec -i $CONTAINER bash -c "mysql -u $USERNAME -p$PASSWORD $DATABASE -e 'LOAD DATA LOCAL INFILE '\''/tmp/import_file'\'' REPLACE INTO TABLE $TABLE FIELDS TERMINATED BY '\''\t'\'' LINES TERMINATED BY '\''\n'\'' IGNORE 1 ROWS;'" |
|
|
} |
|
|
} |
|
|
############################################################ |
|
|
############################################################ |
|
|
############################################################ |
|
|
############################################################ |
|
|
# Main program # |
|
|
|
|
|
|
|
|
# main program # |
|
|
############################################################ |
|
|
############################################################ |
|
|
############################################################ |
|
|
############################################################ |
|
|
|
|
|
|
|
|
# Set variables |
|
|
|
|
|
|
|
|
# set variables |
|
|
CONTAINER=mariadb |
|
|
CONTAINER=mariadb |
|
|
DATABASE=toolkit |
|
|
DATABASE=toolkit |
|
|
USERNAME=xxxxxxxx |
|
|
USERNAME=xxxxxxxx |
|
|
|
|
|
|
|
|
EXPORT_SQL_FILENAME=toolkit_db_ |
|
|
EXPORT_SQL_FILENAME=toolkit_db_ |
|
|
IMPORT_SQL_DIRECTORY="/Users/ad7588/Downloads" |
|
|
IMPORT_SQL_DIRECTORY="/Users/ad7588/Downloads" |
|
|
IMPORT_SQL_FILENAME=toolkit_db.sql |
|
|
IMPORT_SQL_FILENAME=toolkit_db.sql |
|
|
EXPORT_CSV_DIRECTORY="./db_exports" |
|
|
|
|
|
CSV_FILENAME=$2`date +"%Y%m%d"` |
|
|
|
|
|
|
|
|
EXPORT_TXT_DIRECTORY="./db_exports" |
|
|
|
|
|
EXPORT_TXT_FILENAME=$2`date +"%Y%m%d"` |
|
|
|
|
|
|
|
|
# error message for no flags |
|
|
# error message for no flags |
|
|
if (( $# == 0 )); then |
|
|
if (( $# == 0 )); then |
|
|
|
|
|
|
|
|
exit 1 |
|
|
exit 1 |
|
|
fi |
|
|
fi |
|
|
|
|
|
|
|
|
# Get the options |
|
|
|
|
|
|
|
|
# get the options |
|
|
while getopts ":hleicv" flag; do |
|
|
while getopts ":hleicv" flag; do |
|
|
case $flag in |
|
|
case $flag in |
|
|
l) # display License |
|
|
l) # display License |
|
|
|
|
|
|
|
|
i) # import database from file |
|
|
i) # import database from file |
|
|
Import |
|
|
Import |
|
|
exit;; |
|
|
exit;; |
|
|
c) # export single table as CSV |
|
|
|
|
|
TABLE=$2 |
|
|
|
|
|
CSV_table_export |
|
|
|
|
|
exit;; |
|
|
|
|
|
v) # import single CSV to table |
|
|
|
|
|
TABLE=$2 |
|
|
|
|
|
IMPORT_CSV_FILE=$3 |
|
|
|
|
|
CSV_table_import |
|
|
|
|
|
exit;; |
|
|
|
|
|
|
|
|
c) # export single table as tab-delimited txt |
|
|
|
|
|
if [ -z "$2" ] |
|
|
|
|
|
then |
|
|
|
|
|
echo "-c requires a table name as an argument" |
|
|
|
|
|
echo |
|
|
|
|
|
echo "Syntax: database_functions.sh -c [table name]" |
|
|
|
|
|
else |
|
|
|
|
|
TABLE=$2 |
|
|
|
|
|
Table_export |
|
|
|
|
|
exit 1 |
|
|
|
|
|
fi;; |
|
|
|
|
|
v) # import single tab-delimited txt to table |
|
|
|
|
|
if [ -z "$2" ] || [ -z "$3" ] |
|
|
|
|
|
then |
|
|
|
|
|
echo "-v requires a table name as an argument and the file to be imported" |
|
|
|
|
|
echo |
|
|
|
|
|
echo "Syntax: database_functions.sh -v [table name] [file]" |
|
|
|
|
|
else |
|
|
|
|
|
TABLE=$2 |
|
|
|
|
|
IMPORT_TXT_FILE=$3 |
|
|
|
|
|
Table_import |
|
|
|
|
|
exit 1 |
|
|
|
|
|
fi;; |
|
|
\?) # Invalid option |
|
|
\?) # Invalid option |
|
|
Help |
|
|
Help |
|
|
exit;; |
|
|
exit;; |