0

LOAD DATA INFILE commond の使用に問題があります。

以下のコマンドを使用してテーブルを作成しました。

temp.executeUpdate("CREATE TABLE Patient (patientID INT AUTO_INCREMENT, name VARCHAR(100),address VARCHAR(150), phone VARCHAR(15), birthdate DATE, PRIMARY KEY (patientID))");

このコマンドを使用してファイルから読み取ろうとしています。

temp = connect.createStatement();
    temp.executeUpdate("LOAD DATA LOCAL INFILE 'patient.txt' INTO TABLE Patient {name,address,phone,birthdate} FIELDS ENCLOSED BY '\"' ");
    temp.executeUpdate(" UPDATE Patient SET name=NULL WHERE name= '-' ");
    temp.executeUpdate( " UPDATE Patient SET address = NULL WHERE address = '-' ");
    temp.executeUpdate(" UPDATE Patient SET phone = NULL WHERE phone = '-' ");
    temp.executeUpdate(" UPDATE Patient SET birthdate = NULL WHERE birthdate = '-'");

私のサンプル テキスト ファイルはこれです。

"omer"  "trabzon"   "3253008"   1990-06-10
"ali"   "ankara"    "2234887"   1999-11-12

ただし、最初のフィールドを読み取って 2 番目のフィールドにスキップすることはできません。そのため、2 番目のフィールドは最初のフィールドに置き換えられます。

最初のフィールドを適切な場所に配置するのを手伝ってくれませんか?

ありがとう

4

2 に答える 2

2

自動インクリメント列の「omer」の前と「ali」の前 (各行の先頭) に「\N」を追加します。日付も引用符で囲みます

于 2011-01-13T15:40:39.437 に答える
1

問題は、ロード データ ファイルの行のシーケンスであることがわかりました。正しいシーケンスは

temp.executeUpdate("LOAD DATA LOCAL INFILE 'patient.txt' INTO TABLE Patient FIELDS ENCLOSED BY '\"' {name,address,phone,birthdate}")
于 2011-01-15T09:45:30.997 に答える