2016-07-20 6 views
-1

を使用して、単一の列のすべての行は、私が18列を持つテーブルを持っていると私は、LOAD DATA INFILEを使用し、カラムPAGE_COUNTのすべての行を更新します。データを持つファイルは非常にシンプルで、\ n分かれた値です。私はここで何か印象的なものを取り除こうとしていない。その1つの列の値を更新したいだけです - 約3000レコード。私が使用しているコードはUPDATEは、LOAD DATA INFILE

LOAD DATA INFILE '/tmp/sbfh_counter_restore' REPLACE INTO TABLE obits FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (page_count); 

されており、このすべてが行うには、列PAGE_COUNTにダンプファイルの内容全体を新しい1行を追加しています。私は間違って何をしていますか?私はphpmyadminを使用していますか?私はそれがより良い私のスキルセットをフィットするようことを使用させていただきます。私は、MySQLのドキュメントから理解できるものをベースSELECT page_count FROM obits INTO outfile '/tmp/sbfh_counter_restore'

+0

明らかに、キャリッジリターンに問題があります。 Linuxの場合と同様に '\ r \ n'を '\ n'に変更してください.LFのみです(WinのようにCR + LFではありません)。アウトファイル形式も確認してください。 –

答えて

0

を使用してファイルを作成した)

、それは一つの列にロードするデータをサポートしていません、すべての列が正しい順序でファイルに存在する必要があります。それは列の順序が一致していることを確認しますよう は、少なくとも、あなたはその後、戻ってそれをロードし、INTO OUTFILEをobits SELECT * FROMを使用する必要があります。

すべてのファイルの内容が新しい行にロードされたので、私はあなたがあなたのテーブルの主キー(または一意キー)を確認すべきだと思います。行はキーによって照合され、照合結果に基づいて更新または挿入されます。 page_countがプライマリまたはユニークキーではない可能性があります。 希望に役立ちます。

+0

私は間違った方向に向かっていた。私はPAGE_COUNTに正しいデータを持っていたバックアップから新しいテーブルを作成する必要がありましたし、その後の更新は、インナーobits '使用して生産・テーブルにのみ、その列をコピーしtemp_obits.obit_id = obits.obit_id設定obits.page_count = temp_obits.page_countにtemp_obitsに参加します; ' –

関連する問題