我尝试使用一个装满 .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
有没有一种简单的方法可以修改此命令行参数以找出哪个文件产生了此错误?
我尝试编写一个脚本,在所有文件的第 65-69 行上运行 sed,但结果太多,无法得知。一旦我确定哪个 sql 产生了错误,我就可以删除它并重新导入它。
已解决:已使用
ls -rS *.sql | xargs grep -i "dbname.some_table" | less
追溯到过早调用的地方
答案1
尝试在您的 Web 数据目录中运行此命令:
find . -name "*.php" -print | xargs grep -i "dbname.some_table"
这将递归扫描所有子目录并仅查找具有扩展名的文件.php
,然后打印出包含中指定的文本的任何行grep
。
答案2
使用--tag:
ls -rS *.sql | parallel --tag -j16 sql mysql://username:password@/dbname "<"