0

以下のクエリを使用してCSVデータをMYSQLテーブルにアップロードしようとしています。正常に実行されています。2,000万個のデータを含むCSVファイル。しかし、今でもデータのアップロードに問題があります。

このような私のCSVファイル構造:

Name phone_no     DND
xxx  99934034343  A
xxx  99934034345  D
xxx  99934034346  A
xxx  99934034347  D

以下のコマンドだけを使ってアクティブな「A」を挿入したい。

LOAD DATA LOCAL INFILE '/root/782012_23.csv'
INTO TABLE tbl_dndno
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';

このような期待される記録

Name phone_no     DND
 xxx  99934034343  A
 xxx  99934034346  A
4

1 に答える 1

2

コマンドは正常に機能していると思いますが、予想される2行ではなく4行でテーブルを埋めています。

LOAD DATA IN FILEドキュメントは、要求しているものをサポートしていないようです。番号ごとにのみ除外できるため、このcsvファイルの作成中に行番号を知る方法がある場合は、この機能を使用できます。それ以外の場合、2つの回避策があります。

(Linuxの場合)を使用して(mysqlの外部で)ファイルをロードする前にファイルをフィルタリングできます

grep "D$" /root/782012_23.csv > filteredfile; LOAD DATA LOCAL INFILE 'filteredfile' ...

またはSQL経由でロードした後にフィルタリングします。

your_command;mysql -u user -ppassword "DELETE FROM yourtable WHERE DND = 'A'";
于 2012-08-28T09:32:02.243 に答える