Загрузить файл, связанный в MySQL DB, извлечь текст и вставить в db с помощью скрипта bash?

Я хочу загрузить файл (загружайте только в том случае, если URL-адрес заканчивается определенной строкой), какой URL-адрес находится в базе данных MySQL, извлекает текст и записывает текст в базу данных, заменяя URL-адрес.
И это нужно сделать для каждой строки (около 25 тыс. Строк).

Есть ли способ сделать это с помощью сценария bash (или что-то еще, например Java)?

Сервер MySQL работает на моем Linux-корне, у меня есть полный доступ к нему. Моя настольная ОС также Linux (Linux Mint со многими настройками).

Это то, что я сделал до сих пор:

#!/bin/bash for (( i=1; i <= 5; i++)) do DBQUERY=`mysql -B -ss -uuser -ppassword -e "USE table; SELECT column FROM table WHERE pid='$i';"` if [[ $DBQUERY == *.pls ]] ; then wget -O tempfile.pls $DBQUERY while read line do if [[ $line == File1=* ]] ; then mysql -B -ss -uuser -ppassword -e "USE table; UPDATE table SET column = '${line:6}' WHERE pid = '$i';" fi done <tempfile.pls fi done 

Как я могу его защитить?

Чтобы быть в безопасности, вы должны смотреть на сгенерированный код, если код может быть введен.

В этой команде mysql -B -ss -uuser -ppassword -e "USE table; SELECT column FROM table WHERE pid='$i';" , вы знаете, что i – число от 1 до 5, так что все в порядке.

Но в этой команде mysql -B -ss -uuser -ppassword -e "USE table; UPDATE table SET column = '${line:6}' WHERE pid = '$i';" , вы не можете быть уверены в $ {line: 6}; вы можете представить, что он содержит одну цитату, в этом случае вам нужно заменить на две одинарные кавычки, вы также можете проверить длину меньше длины столбца в базе данных (предположим здесь 255) или обрезать данные перед заменой кавычки.

 #!/bin/bash for (( i=1; i <= 5; i++)) do DBQUERY=`mysql -B -ss -uuser -ppassword -e "USE table; SELECT column FROM table WHERE pid='$i';"` if [[ $DBQUERY == *.pls ]] ; then wget -O tempfile.pls $DBQUERY while read line do if [[ $line == File1=* ]] ; then str=${line:6:255} str=${str//\'/''} mysql -B -ss -uuser -ppassword -e "USE table; UPDATE table SET column = '$str' WHERE pid = '$i';" fi done <tempfile.pls fi done