Linux+PHP遍历文件夹下所有文件,插入数据库

我只是一个虾纸丫 提交于 2019-11-27 08:14:42

需求:某文件夹下的所有.jpg文件插入数据库中,只存文件路径和文件名.

一.Linux下操作

1.awk安装
sudo apt-get install -y gawk

2.调用find命令遍历文件夹下所有.jpg文件,把遍历的文件路径写到一个文件里(加 | sort 是为了find的结果自然排序,否则find的结果很乱)

find /home/abc/test/ -name "*.jpg" | sort > /home/abc/find_abc_test.txt

3.awk整理路径文件,拼装成sql语句(awk拼装sql根据个人情况,我这里分隔符时/和.)

awk -F '[\/.]' '{now=systime();nt=strftime("%Y",now)"-"strftime("%m",now)"-"strftime("%d",now)" "strftime("%T");print "INSERT INTO `your_database_name`.`your_table_name` (file_title,file_name,file_path,create_time,update_time)  VALUES (\""$8"\",\""$8"."$9"\",\""$6"/"$7"/"$8"."$9"\",\""nt"\",\""nt"\");"}' /home/abc/find_abc_test.txt > /home/abc/sql_abc_test.sql

可以先中命令行里试试awk分隔后的各个块是什么,比如

awk -F '[\/.]' '{print $1}' /home/abc/find_abc_test.txt

4.mysql导入sql文件,数据库名your_database_name

mysql -uroot -proot your_database_name </home/abc/sql_abc_test.sql

到此,已经把想要的数据插入数据库.

二.Linux+PHP

用PHP操作,用exec()方法,把上面的命令都拼成字符串,注意引号用\.

例:($your_dir_path被遍历文件夹路径,因为浏览器拿不到文件夹真实路径,所以$your_dir_path我是事先存数据库中的)

$your_command_str = 'find ' . $your_dir_path . '/ -name "*.jpg" | sort > /home/abc/find_abc_test.txt';

exec($your_command_str);

其余命令以此类推,注意操作时涉及到的文件夹给好相应的权限,还有owner问题.

注意把执行时间调无限

ini_set('max_execution_time','0');

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!