データベースのテキストフィールド内のテキストを削除する
-
19-09-2019 - |
質問
最近、古いブログ (SharePoint) から現在のブログ (WordPress) に大量のブログ投稿をインポートしようとしました。インポートが完了すると、多くの厄介な問題が発生しました <div>
タグやその他の HTML が投稿のコンテンツに入り込み、サイトのレンダリング方法が台無しになりました。
MySQL データベース内の問題のある行を表示することはできますが、問題の原因となっている可能性のある HTML テキストを選択的に削除する方法があるかどうか知りたいと思っています。 おそらく C# でテキストを解析することでこれをハッキングできますが、可能であれば SQL を使用してこれを行う方法を見つけたいと考えています。
これらのファイルの 1 つがデータベースのテキスト フィールドにどのように表示されるかを示す全文サンプルを表示したい場合は、次のようにします。 完全なサンプル ファイルを Web サイトにアップロードしました.
私がやりたいことは次のとおりです。
- 取り除く
<![CDATA[<div><b>Body:</b>
すべてのファイルの先頭から すべてのファイルの末尾にあるメタ情報を削除します。メタ情報は次のようになります。
<div><b>Category:</b> SharePoint</div> <div><b>Published:</b> 11/12/2007 11:26 AM</div> ]]>
すべて削除します
<div>
そして閉会</div>
タグには、次のような class 属性が含まれる場合があります。<div class=ExternalClass6BE1B643F13346DF8EFC6E53ECF9043A>
注記:外部クラスの末尾の 16 進文字列は異なる場合があります
これまで MySQL で Update ステートメントを使用したことがなく、テキスト フィールド内のテキストを選択的に置換するにはどこから始めればよいのかわかりません。SQL ステートメント内から正規表現を使用すると役に立ちますか?リモート DB に対してステートメントを実行するにはどうすればよいですか?
解決
あなたがそれらをインポートする前に投稿をクリーンアップでしょうか?テキストファイルは、これまで容易になるだろうとあなたが扱うことができ、ローカル・ファイルでの作業のように思えます。次に、インポートする前に、あなたの好みに合わせて問題を下に耐えるためにはPerlやPythonを使用することができます。
これは、あなたがまだのSharePointで終わったデータにアクセスを持っていることを前提としています。
他のヒント
あなたがあなたのウェブサイトやほとんどにacustomedさを提供するために使用しているバックエンドのプラットフォームを利用せずにこれを行うための簡単な方法はありません。私自身、私は最高の状態でトリッキーなことができますデータのアップをきれいにするPHPやPerlを使用します。だから、答えはそれを行うことができます、ですが、あなたがそうするようにプログラミング/処理言語のいくつかのタイプを使用する必要があり、自分自身でMySQLがデータをきれいにすることはできません。
あなたは、あなたの質問に言ったように、あなたがC#のでそれをハックするスキルを持っている場合は、繰り返しにカーソルを使用するストアドプロシージャを作成する方法を見つけ出すことができるはず、SQLを使用することが決定されていると仮定すると、/ループをフェッチ行を選択するために、文字列関数は、データをマッサージするために、更新は、行を更新します。これをチェックします: