0

タブ区切りファイルを mysql データベースにロードする必要があります。私のデータベースは、ID;A;B;C;D;E という列でセットアップされており、ファイルは ID 列と D 列のダンプです。このファイルをデータベースにロードし、列 ID と D だけを置き換えるにはどうすればよいですか。列 C と E の値を変更します。今ロードすると、列 C と E が DEFAULT:NULL に変更されます。

4

3 に答える 3

2

私はすでにこのような同様の質問に答えましたここ、しかし、あなたの場合、csvを一時テーブルにロードしてから、単純な更新SQLステートメントを使用して、特定の列を一時テーブルから本番テーブルに更新します。

于 2012-05-15T18:15:30.367 に答える
0

次のコマンドを使用して、特定の列を更新できます。

UPDATE the_table
SET D=<value-of-D>
WHERE ID=<value-of-ID>

次に、タブ区切りファイルの各行に対してこのコマンドを実行し、それぞれの D 値と ID 値を置き換えます。

于 2012-05-15T18:07:40.220 に答える
0

ストアド プロシージャまたは PHP プログラムを使用して、必要な処理を行うことができます。

MySQL の場合、SP はload_file()を使用してファイルを開き、値を変数に格納する必要があります。次に、プログラムは、文字列内の行全体を取得するために、改行を表す "\n" を見つけてループする必要があります。

次に、 locate()を使用して最初のタブ位置を見つけ、substring()を使用して最初の ID col を取得する必要があります。次に、プログラムは、locate() とその 3 番目のパラメーターを使用して、4 番目のタブ、つまりさらに 3 つのタブを見つける必要があります。これが D 列の開始位置になります。次に、locate() とその 3 番目のパラメーターを使用して、次のタブ文字を再度見つけます。これにより、D 列の終了文字が得られます。substring() を使用して、D 列の内容を取得します。update コマンドを使用して、where 句の検索キーとして ID を使用して行の D 列を更新します。

上記はすべての行をループするため、データのすべての行を更新します。

于 2012-05-15T18:26:55.650 に答える