大規模な初心者なので、どんな助けでも大歓迎です。
約 30,000 のエントリを持つ mysql データベースがあり、それぞれに .jpg 形式のサムネイルへのリンクがあります。
とにかくmysqlデータベースを調べて、各リンクがまだ有効であることを確認する必要があるかどうかを調べようとしていました.jpgファイルが本来あるべき場所にあるかどうか。
したがって、各エントリには ID、名前、サム (URL) があります。
ありがとう!
SELECT * from table_name where SUBSTRING(url, -3, 3) = 'jpg';
あなたの質問のこの行を考慮してください:「それぞれ.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%';
別のインストゥルメント:
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
が一番長くかかるようです。
リンクについては、次のようなクエリを実行してすべてのリンクを取得します。
SELECT DISTINCT url FROM your_stuff;
データベースの正確な性質については言及していませんが、そのようなものは機能するはずです。
次に、それをループし、それぞれに対して cURL のようなものを使用して HEAD リクエストを実行します。これは、サーバーが実際のファイルを返してはならないことを除いて同一であるため、通常の GET リクエストよりも優れているため、ダウンロードする必要はありません。それらがそこにあるかどうかを確認するためだけにすべての画像。HEAD リクエストを実行して、サーバーがステータス 200 で応答したことを確認します。