2

私はこれをしたいです:

UPDATE table SET blobCol = HTTPGET(urlCol) WHERE whatever LIMIT n;

これを行うためのコードはありますか? MySQL ドキュメントには、DNS ルックアップを実行する関数を追加する例が含まれているため、これが可能であることはわかっていました。

MySQL / Windows / できればコンパイルする必要はありませんが、できます。

(このようなことを聞​​いたことがなくても、存在するなら持っているだろうと期待する場合は、「proly not」がいいでしょう。)

編集: これにより、ワーム全体のセキュリティが解除されることはわかっていましたが、私の場合、DB への唯一のアクセスは mysql コンソール アプリを介したものです。これは、誰でもアクセスできるシステムではありません。Web バックエンドではありません。ローカルデータロギングシステムのみです

4

4 に答える 4

6

いいえ、ありがたいことに、それはセキュリティ ホラーです。アプリケーションのすべての SQL インジェクション ホールを利用して、他のサイトを攻撃するためのスパム接続を開始できます。

おそらく、C で記述して UDF としてコンパイルできます。しかし、アプリケーション層で SELECT を実行し、HTTP GET と UPDATE を実行して結果をループすることに比べれば、実際には何も得られないと思います。HTTP 接続の作成について話している場合、データベース層でそれを行うことの余分な効率は、とにかくネットワークの遅延によって完全に小さくなります。

于 2008-11-15T13:14:01.157 に答える
2

MySQLの一部としてそのような機能を知りません。多くのURLからHTMLデータを取得しようとしていますか?

別の解決策は、GoogleスプレッドシートのimportHtml関数を使用することです。

Googleスプレッドシートを使用すると、オンラインデータをインポートできます

于 2008-11-14T23:50:42.633 に答える
0

そうではありません。

SQL環境内からWebコンテンツを取得することを絶対に決定している場合、私が知る限り、2つの可能性があります。

  1. カスタム MySQL UDF を C で記述します (bobince が述べたように)。これは、C の経験、必要なセキュリティの程度、UDF をどの程度完成させたいかによって、大きな仕事になる可能性があります。リクエストをGETするだけですか?POSTはどうですか?頭?等

  2. これを実行できる別のデータベースを使用してください。SQL に満足している場合は、おそらく PostgreSQL と、Python や PHP などのスナップイン言語の 1 つを使用してこれを行うことができます。

SQL にこだわりすぎない場合は、 eXistのようなものを使用できます。XQuery を使用すると、この種のことを比較的簡単に行うことができます。結果をスキーマに合わせて簡単に変更したり (単に blob フィールドにまとめるのではなく)、ページを「そのまま」xhtml doc として保存したりできると便利です。 DBで。

次に、すべてのドキュメントに対して非常に迅速にクエリを実行して、たとえば、すべてのリンクや引用などを取得できます。余分な作業をほとんど行わずに、そのような結果に XSL を適用することもできます。ページを参照用に保存していて、その結果を個人用の「イントラネット」スタイルのアプリに適応させたい場合に最適です。

また、eXist はドキュメント中心であるため、あいまいテキスト検索、単語に近い検索のための優れた方法が多数あり、優れた全文インデックス (MySQL よりもはるかに優れています) があります。コンテンツのデータマイニングを行った後に最適です。たとえば、「バーガー」のような単語が UL リストにない「ホットドッグ」の 50 単語以内にあるすべてのドキュメントを見つけてください。MySQLでネイティブにやってみてください!

余談ですが、悪意はありません。人々が CMS を構築するときに、なぜ eXist が見落とされているのか、よく疑問に思います。そのネイティブ フォーマット(XML、またはそのサブセット (x)HTML) でコンテンツを格納し、ネイティブ フォーマットで簡単にクエリを実行し、ネイティブ フォーマットから変換することができるデータベースです。そのネイティブ形式場合によっては、SQL が単に仕事に適していないことがあります。

ごめん。ワッフルするつもりはありませんでした!:-$

于 2008-11-15T22:51:37.107 に答える
0

そうではありません。Web 環境でのベスト プラクティスは、データベース サーバーを外部から分離することです。これは、db サーバーがインターネットからデータを取得できないようにすることを意味します。

于 2008-11-15T13:17:36.470 に答える