Вот что я пытаюсь сделать:
- Запрос имени пользователя, базы данных и пароля для SQL
- Попытка SQLDUMP
- В случае сбоя из-за чтобы указать c таблицу, спросите, для какой таблицы, после ввода, добавьте ее в сценарий.
- Выполните автоматический запуск после добавления таблицы
- Если снова возникла ошибка, запросите новую таблицу, добавьте таблицу в list
- Продолжайте этот процесс до успешного завершения
Вот что я сделал до сих пор:
#!/bin/bash
:dbase
echo "What is the Database name?"
read db1
goto :PW
:PW
echo "what is the password?"
read p1
PASSWORD=${p1}
HOST=mysql
USER=root
DATABASE=${db1}
DB_FILE=SQLDump.sql
EXCLUDED_TABLES=(
)
IGNORED_TABLES_STRING=''
for TABLE in "${EXCLUDED_TABLES[@]}"
do :
IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}"
done
echo "Dump structure"
mysqldump --compress --host=${HOST} --user=${USER} --password=${PASSWORD} --single-transaction --no-data --routines --extended-insert=false --max_allowed_packet=2048M ${DATABASE} > ${DB_FILE}
echo "Dump content"
mysqldump --compress --host=${HOST} --user=${USER} --password=${PASSWORD} --extended-insert=false --max_allowed_packet=2048M ${DATABASE} --no-create-info --skip-triggers ${IGNORED_TABLES_STRING} >> ${DB_FILE}
pause
alias ll='ls -lah'
ll *.sql
:choice
set /P c=Do you see your file[Y/N]?
if /I "%c%" EQU "Y" goto :yes
if /I "%c%" EQU "N" goto :no
goto :choice
:yes
echo "Awesome, I'll delete this script now."
rm -rf /srv/SQLDump
echo "I have successfully deleted SQLDUMP."
pause
exit
:no
echo "What was the name of the table that failed?"
read $table1
set /P c=Was there another?[Y/N]?
if /I "%c%" EQU "Y" goto :t2
if /I "%c%" EQU "N" goto :continue
PASSWORD=${p1}
HOST=mysql
USER=root
DATABASE=${db1}
DB_FILE=SQLDump.sql
EXCLUDED_TABLES=(
${table1}
)
IGNORED_TABLES_STRING=''
for TABLE in "${EXCLUDED_TABLES[@]}"
do :
IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}"
done
echo "Dump structure"
mysqldump --compress --host=${HOST} --user=${USER} --password=${PASSWORD} --single-transaction --no-data --routines --extended-insert=false --max_allowed_packet=2048M ${DATABASE} > ${DB_FILE}
echo "Dump content"
mysqldump --compress --host=${HOST} --user=${USER} --password=${PASSWORD} --extended-insert=false --max_allowed_packet=2048M ${DATABASE} --no-create-info --skip-triggers ${IGNORED_TABLES_STRING} >> ${DB_FILE}
pause
alias ll='ls -lah'
ll *.sql
:choice
set /P c=Do you see your file[Y/N]?
if /I "%c%" EQU "Y" goto :yes
if /I "%c%" EQU "N" goto :no
goto :choice
Очевидно, он еще не закончен. Я столкнулся с проблемой, когда я вызываю скрипт снова и снова, чтобы добавить несколько таблиц. Я знаю, что есть обходной путь, но, поскольку я самоучка, я не смог понять это. Идеи