2010-12-27 15 views
2

私は、MySQLテーブルにインポートするテキストファイルを持っています。ファイルの列はコンマで区切られています。私は適切なテーブルを設定し、私はコマンドを使用:スペースを使わずにMySQLテーブルにデータをロードするには?

load data LOCAL INFILE 'myfile.txt' into table mytable FIELDS TERMINATED BY ‘,’; 

問題があり、そこにテキストファイル内のいくつかのスペースは、各列のデータの前と後、あり、そしてスペースがすべてインポートされているようですテーブルで(それは私が欲しいものではありません)。 (MySQLでインポートする前にテキストファイルの各行を処理する以外の)空のスペースなしでファイルをロードする方法はありますか?

+0

[Mysql:LOAD DATA INFILEクエリでRTRIMを使用するにはどうすればいいですか?](http://stackoverflow.com/questions/4162362/mysql-how-can-i-use-rtrim-in-my -load-data-infile-query) – David

答えて

0

.NETを使用できる場合、CSVReaderは素晴らしいオプションです(http://www.codeproject.com/KB/database/CsvReader.aspx)。 CSVからデータを読み取り、区切り文字、トリムオプションなどを指定することができます。あなたの場合、各値から左右のスペースをトリムすることができます。結果を新しいテキストファイルに保存してデータベースにインポートするか、CsvReaderオブジェクトをループして各行をデータベースに直接挿入することができます。 CsvReaderのパフォーマンスは印象的です。お役に立てれば。

2

私が理解する限り、実際にデータファイルを実際に読み込む際にこれを行う方法はありません(私も同様です)。

これを処理するための最良の方法はTRIM 機能

("SET column2 = TRIM(column2)") 

またはTRIM()機能を使用して、ロードした後の文字列の列の更新を実行するとSET句を使用するかにあるようです。

プリペアドステートメントを使用してストアドプロシージャを作成し、指定したテーブルのすべての列に対して、ロード直後にTRIM関数を実行することもできます。

テーブル名を変数として渡すと、spはinformation_schemaデータベースを使用してアップロードする列を決定します。

関連する問題