Я попытался ускорить импорт большого набора данных с папкой, полной файлов .sql

ls -rS *.sql | parallel -j16 mysql -uusername -ppassword dbname "<"

Вскоре после запуска я получаю сообщение об ошибке:

ERROR 1146 (42S02) at line 65: Table 'dbname.some_table' doesn't exist
ERROR 1146 (42S02) at line 69: Table 'dbname.some_table_other' doesn't exist

Есть ли простой способ изменить этот аргумент командной строки, чтобы узнать, какой файл генерирует эту ошибку?

Я попытался сделать скрипт, который запускает sed в строке 65-69 всех файлов, но результатов слишком много, чтобы знать. Как только я определю, какой sql сгенерировал ошибку, я могу удалить ее и повторно импортировать.

Решено: использовано

ls -rS *.sql | xargs grep -i "dbname.some_table" | less

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

2 ответа2

1

Попробуйте запустить эту команду в своем каталоге веб-данных:

find . -name "*.php" -print | xargs grep -i "dbname.some_table"

Это будет рекурсивно сканировать все подкаталоги и loof на наличие файлов только с расширением .php , а затем распечатывать все строки, содержащие текст, указанный в grep .

0

Используйте --tag:

ls -rS *.sql | parallel --tag -j16 sql mysql://username:password@/dbname "<"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .