大きなHTMLテーブルをCSVに変換


4

古いレガシーシステムから新しいシステム(MySQL DB)にエクスポートする必要があるデータ(基本的な個人情報)があります。約200MB、6つのファイルに分割されています。

私がエクスポートしているシステムは、Excelファイルとしてすべての必要なデータをエクスポートすることができます。ただし、Excelを作成する方法は、HTMLテーブルを作成してそれを次のように保存することです。 .xls 拡張。テキストエディタで見たとき、それらはちょうどこのように見えます(長さ600,000行を除く)。

<table>
<tr>

            <td class="tableh">
                <b>Birth&nbsp;Date</b>
            </td>

            <td class="tableh">
                <b>First&nbsp;Name</b>
            </td>

驚いたことに、Excelは実際にそのようなドキュメントを開くことができます。残念ながら、それを行うには(ファイルごとに)約30分かかり、それを正しい形式で保存するのとほぼ同じくらい長くかかります。

誰もがこれらを変換するための何か提案を持っていますか(それはそれがExcelを取る45-60分より速く)?


ブラウザでそれを開き、そこからコピー&ペーストしてください。
mcalex

@ mcalexちょっと一撃したところ、全部コピーしようとするとChromeがクラッシュした。
Dracs

1
あなたは "いくつかのデータ"と "一つのシステム"と "もう一つ"を指定できますか?データがHTMLファイルの場合は、インポートツールを使用してExcelに表示してからCSVとして保存できます。通常、ExcelのHTMLソースに悩むことはありません。
teylyn

@teylyn私は私の質問を少し明確にしました。 Excelのデータインポートツールを使ってみました。 1ファイルに約20分かかりました。ちょっとした改善ですが、もっと安定しているように見えました。
Dracs

拡張子を.htmlに変更し、それをExcelで開いてから、Save as a csv fileにしてみます。これでうまく行かない場合は、Excelで開く前に、HTMLファイル内のクリーンアップ(メモを削除)するための優れたエディタ(Notepad ++またはSublime Text)を使用します。
Andy G

回答:


2

それはただ一つのテーブルですか?あなたのシステムはcsvとしてエクスポートできないのですか? (Excelやhtmlにエクスポートできるがcsvにはエクスポートできないのは珍しいようです。)

私はファイルを(再び)分割して、後でそれを再構築したいと思うでしょう。私は(STまたは他のエディタで)最初に正規表現を必要としないテキストを置き換えることを試みるでしょう。正規表現の置き換えは、通常の置き換えよりもはるかに遅くなります。私がする必要がある正規表現置換の量を減らすためだけにそれを使用しても、私は標準置換をできるだけ使用します。全体のプロセスにかかる時間を計算するために、少し試してみます。

あるいは、ファイルをXMLフォーマットに変換し、最初にタグを追加して、もう一度置き換えることを試みるかもしれません。それからExcelを全部スキップして、MySQLでこれを見つけました:

LOAD XML LOCAL INFILE '/pathtofile/file.xml' 
INTO TABLE my_tablename(personal_number, firstname, ...);

XMLをインポートします。 "LOAD XML INFILEはMySQL 5.2から利用可能です"

他の誰かが貢献するかもしれないかどうか見るのを待つかもしれません。がんばろう。


私は自分のためにHTMLを適切なXMLに変換するアプリケーションを探すかもし​​れません。
Andy G

私はシステムがCSVをサポートしていることを述べたべきです。しかし、それはすでにデータ内にコンマをカプセル化またはエスケープする方法を全く与えません(それは私のデータセットではかなり一般的です)。私はすでに職場で別のコンピュータを使ってExcelを使って変換を行っています(だからこの時点で問題は学問です)。しかし、XMLのインポートオプションを調べたことはありますが、動作するのに十分な柔軟性があると思われます。残念ながら私はそれをテストしたときに「メモリ不足」エラーを出していたphpMyAdmin経由でしかDBにアクセスすることができません。
Dracs

2

非エクセルソリューションも適していますか?もしそうなら、あなたのアップスピードとダウンロードスピードはどれくらい速いですか?

この オンラインサービス 私の簡単なテストで良い仕事をしました。
インターネット接続によっては、Excelより速いかもしれません。

入力ファイル

<table>
<tr>
            <td class="tableh">
                <b>Birth&nbsp;Date</b>
            </td>
            <td class="tableh">
                <b>First&nbsp;Name</b>
            </td>
</table>
</tr>

出力ファイル

Birth Date, First Name
  • あなたは、さまざまな区切り文字(コンマ、セミコロン、垂直バー、表形式)から選択できます。

もちろん、これらの個人情報をオンラインサービスにアップロードできるかどうかを自分で確認する必要があります。それがわかりません。


私は自分でいくつかのテストデータを試してみましたが、それはかなりうまくいくようです。しかし、あなたが指摘したように、個人情報のせいで、私はそれを第三者にアップロードするのは不快です。
Dracs

0

申し訳ありませんが、共有するコードはありませんが、Excelのプロセスの一部を切り取り、カンマ区切りのテキストをそのまま使用することをお勧めします。

二つのアイデア:

  1. htmlファイルを適切なxmlファイルにし(2つのheaderタグと全体的なwrapperタグだけが必要です)、xsltスタイルシートを作成し(非常に単純であるべきです)、そしてxsltプロセッサを通してxmlファイルを実行します。 xsltproc

  2. Linux / Unixをお使いの場合は、次のようなストリームエディタを使用してスクリプトを書くことを検討してください。 awk タグを取り除き、フィールドを出力します。

どちらの場合でも、ロジックは次のようになります。

  • に遭遇した場合 <th>改行を出力する
  • に遭遇した場合 <td> </td> ペアにして、その内容を引用符で囲んで出力する

素晴らしいです xslt SOのフォーラム、コードサンプルを投稿する価値があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.