Massive新手,所以任何帮助都非常感激。
我有一个包含大约30,000个条目的mysql数据库,每个条目都有一个.jpg格式的缩略图链接。
我试图弄清楚是否有任何方法要通过mysql数据库并验证每个链接是否仍然有效 - 即如果.jpg文件是它的位置?
所以每个条目都有一个id,name,thumb(这是一个url)。
谢谢!
答案 0 :(得分:0)
对于链接,请执行查询以获取所有链接,例如:
SELECT DISTINCT url FROM your_stuff;
您没有提到数据库的确切性质,但这样的事情应该有效。
然后循环遍历它,对于每一个,使用类似cURL的东西来做一个HEAD请求 - 这比通常的GET请求更好,因为它是相同的,除了服务器不应该返回实际文件,所以你不要必须下载每个图像只是为了看看它们是否在那里。只需执行HEAD请求,并确认服务器的状态为200。
This question goes into a little more about the HEAD request in cURL
答案 1 :(得分:0)
在你的问题中考虑这一行:“每个都有一个.jpg格式的缩略图链接。”
您也可以尝试regexp
:以.jpg
SELECT DISTINCT url_column as regex_u, id
FROM your_table
where url_column regexp '\(.jpg)$';
即使使用like
:contains
jpg
SELECT DISTINCT url_column as like_u, id
FROM your_table
where url_column like '%.jpg%';
另一个有instr:
SELECT DISTINCT url_column as instr_u , id
FROM your_table
where instr(url_column, '.jpg') > 0;
如果您想匹配整个ulr
SELECT DISTINCT url_column as url_u, id
FROM your_table
where url_column regexp '^(https?://|www\\.)[\.A-Za-z0-9/_\-]+\\.(jpg)$'
;
另一位使用Right
:
SELECT DISTINCT url_column as right_u, id
FROM your_table
where Right(url_column,4) = '.jpg';
请检查explain plan
以获得最有效的解决方案。 LIKE
似乎耗时最长。
答案 2 :(得分:0)
SELECT * from table_name where SUBSTRING(url, -3, 3) = 'jpg';