0

2列で約1700万行の大きな区切りのtxtファイルがあります。データベースにインポートしましたが、誤ってテーブルの1つの列のサイズがファイルのテキストよりも短くなりました。つまり、varchar(7000)の代わりにvarchar(4000)

より長いテキストを含む約48,000のレコードが、40k文字にカットされました。

ファイルを再度インポートせずにこれらを置き換えるにはどうすればよいですか?

txtファイルから特定の長さの行のみをフィルタリングして削除し、長い行を挿入して更新できるかどうかを考えています。

しかし、テキストファイルで特定の長さのすべての行を選択するにはどうすればよいですか?またはどのプログラムがそれを行うことができます。

大きなファイルのテキスト編集にMySQLDBとemEditorを使用しています。

ありがとう。

4

2 に答える 2

1

これが他のインフラストラクチャにどのように接続されているかに少し依存しますが、それを処理する最も簡単で安全な方法は、テーブルを削除して再インポートすることです...

それが何らかの理由でオプションではない場合は、テキストファイルを調べて、大きなテキストフィールドを無条件に更新するか、更新が必要な長さ(つまり、4000文字以上)であるかどうかを確認するスクリプトを記述します。

データのインポート後にテーブルに変更があった可能性がある場合は、何が上書きされるか、およびレコードが実際に更新するレコードであるかどうかを確認することが重要です(テーブルのインデックス作成方法によって異なります)。

これがあなたにいくつかの出発点を与えたことを願っています。

お見舞い申し上げます。

于 2013-01-24T14:52:27.887 に答える
0

また、その列に4000バイトが含まれるすべてのレコードを返すクエリを作成することもできます。これは、ファイルをインポートしたときに切り取られたものである可能性があります。そのレコードのセットが手元にあると、データベーステーブルofcに行参照がある場合は、ファイルでそれらを見つけようとすることができます。数が多すぎる場合は、単純なスクリプトでうまくいく可能性があります。

于 2013-01-24T15:23:05.817 に答える