Отладочный вывод
Я попытался ускорить импорт большого набора данных с папкой, полной файлов.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 ответа
Попробуйте запустить эту команду в своем каталоге веб-данных:
find . -name "*.php" -print | xargs grep -i "dbname.some_table"
Это будет рекурсивно сканировать все подкаталоги и loof для файлов только с .php
расширение, а затем распечатайте все строки, содержащие текст, указанный в grep
,
Используйте --tag:
ls -rS *.sql | parallel --tag -j16 sql mysql://username:password@/dbname "<"