さまざまなCRおよびLF改行でテキストファイルをクリーンアップする


3

メモを含むテキストファイルをmySQLにインポートしようとしています。どうやってこれを実現したのかわかりませんが、メモフィールドは常にCR LFで終了しますが、テキスト自体の一部には、CR、LF、CR LFの改行が混在しています。

当然、改行を構成するものが明確に示されていないため、これはインポートする機能を中断します。インポート中にデータの約半分が失われ、カットの原因となったものの25%が切り捨てられます。

この混乱を整理する実行可能な方法はありますか?最初はAccessからエクスポートされました。

ありがとう!


2
CRLF文字とLF文字の組み合わせによって、データをインポートする機能が自然に損なわれるのはなぜですか?改行はそれほど重要ではありません。どのようにインポートしていますか?
ЯрославРахматуллин

LOAD DATA LOCAL INFILE 'source_data.csv' INTO TABLE my_table FIELDS TERMINATED BY '、' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\ r \ n'最後の行は、このインポートの問題を解決しようとして最近追加されたものです。また、元の問題は、メモが改行までインポートされる可能性があることでした。mySQLは次の行の開始であると考え、有効なCSVではないため残りのテキストをダンプしてから次の行に移動すると仮定します、同じように機能しないことがあります
イヴァン

最後のコメントを削除し、(A)インポートに使用するクライアント/ツール/環境の説明(phpmyadmin?何か他のもの?)、(B)問題のある入力テキストの短いサンプル、(C)のテーブル定義で質問を更新します関連する列/レコード。がんばろう。
ЯрославРахматуллин

回答:


1

メモフィールドを囲む一重引用符の外側に適切なCR + LFが含まれている場合、削除するCR + LFに一致するように次のように動作します。

(?<!')\r\n

正規表現の視覚化

Debuggexでライブ編集

元の回答:

テキストファイルで正規表現を実行できますか?

\r\n?|\n

すべての一致を、などの目的の改行コードに置き換えます\r\n


感謝しますが、それはさらにそれを壊すでしょう。私は、CRとLFを個別に取り除くことに耐えることができます。すべてを台無しにするのはランダムなCR + LFです。
イヴァン

ああ あなたは、「ブラーブラー\ r \ nブラーブラー」\ r \ nのようになりましたか?そして、あなたは最後のものを残したいが、テキストの真ん中にあるものは残したくないのですか?実際の\ r \ nの直後に何が来ますか?ランダムデータを含む列Aだけですか?サンプルは素晴らしいと思いますが、別の正規表現のアイデアがあると思います
デーン

実際、サンプルが必要です。メモフィールドは単一引用符で囲まれていませんか?単一引用符が前に付いている\ r \ nをそのままにして、他を削除することはできませんか?この先読みは、すべての悪いものと一致するように思わ(?<!')\r\n
デーン

あなたの努力に感謝します。あなたはその最後の正規表現で何かをするかもしれないと思います。私はそれらの重要性を理解していますが、それらを書くことについてのいまいましいことを理解していないので、あなたの助けに感謝します!今それをテストします。初期の結果は有望に見えました。
イヴァン

0

保持するもの(CR-LFまたはLF)に応じて、unix2dos / dos2unixスタイルのユーティリティを使用して、インポートファイルをCR-LFからLF(またはその逆)に変換およびクリーンアップし、全体が均一になるようにすることができます。

Unix / Linuxプラットフォームを使用している場合は、dos2unixおよびunix2dosコマンドを使用できる必要があります。
Windowsを使用していて、Cygwin(または同等のもの)がない場合は、tofrodosを試すことができます。


0

データ自体の中にCR LFがあり、何らかの修飾子(たとえば、 "")で囲まれていない場合、明らかにこれらの行は複数の行に分割されます。最善の策は、Accessのデータをクリーンアップして再度エクスポートすることです。CR LFが修飾されている場合、ファイルを操作し(おそらくAWKを使用する)、修飾されていないCR LFを\ nに置き換えることができるはずです。

より正確にするために、データについてもう少し知る必要があります。

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