5

最初にアップロードしました load Data Infile の行を使用すると、100000 Im Using Ubuntu のようになります

例:データ

トーンコード....アーティスト...ムービー名...言語

1........Mj........ヌル....................英語

3........AB........ヌル....................英語

4....................CD.................ヌル....................英語

5........EF........ヌル....................英語

しかし今、私は ToneCode 1 から 100000 行までの列 MovieName を更新する必要があります.csv ファイルに更新するデータがあります。データを含む既存のテーブルの .Csv ファイルをアップロードする方法を提案してください

4

2 に答える 2

2

純粋な MySQL を使用し、追加のスクリプトを使用せずにこれを行う最速の方法は次のようになると思います。

  • 一時テーブルを作成し、ToneCode と MovieName の 2 つの列をターゲット テーブルと同じにします。
  • LOAD DATA INFILEを使用して、新しいCSVファイルからデータをロードします
  • http://dev.mysql.com/doc/refman/5.1/en/update.htmlで説明されている INNER JOIN のような構文を使用して、ターゲット テーブルを更新します。

    UPDATE items,month SET items.price=month.price WHERE items.id=month.id;

    これにより、2 つのテーブルが「結合」されitemsmonth(INNER JOIN の「カンマ構文」のみを使用して)結合基準として列が使用され、列の値で列がid更新されます。items.pricemonth.price

于 2013-03-21T14:11:18.360 に答える
0

上記のu Guysのように解決策を見つけました

ソルン: 例

create table A(Id int primary Key, Name Varchar(20),Artist Varchar(20),MovieName Varchar(20));

を使用してすべての 100000 行を追加します

ファイル '/Path/file.csv' 内のデータをテーブル tablename(A) にロードします。フィールドは ',' で終了し、'"' で終了する行は '\n' で終了します (Id,Name,Artist) ここで movie の値は null です

一時テーブルを作成します TA(Id int primary Key,MovieName Varchar(20));

一時テーブル TA にデータをアップロード ファイル '/Path/file.csv' 内のデータをテーブル tablename(A) にロード ',' で終了するフィールド '"' で終了する行 '\n'(IDx,MovieName) で終了

あなたが言ったように今結合を使用して

Update Tablename(TA),TableName(A) set A.MovieName=TA.MovieName Where A.Id=TA.Id

于 2013-03-22T06:08:53.230 に答える