2011-01-13 18 views
0

LOAD DATA INFILEを使用しているときに問題があります。LOAD DATA LOCAL INFILE読み取りの問題

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

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 

それは最初のフィールドを読み、第二ones.Soにスキップすることはできませんしかし、 第二のフィールドは最初のフィールドに置き換えられます。

最初のフィールドを適切な場所に取得するのに役立ちますか?

おかげ

答えて

2

はオートインクリメント・カラムの「Omerの」前に「\ n」を追加し、(各行の初めに)「アリ」の前に。私も引用符で日付を囲むだろう

1

私はちょうどその問題がロードデータファイルの行のシーケンスであることがわかった。正しいシーケンスは

temp.executeUpdate("LOAD DATA LOCAL INFILE 'patient.txt' INTO TABLE Patient FIELDS ENCLOSED BY '\"' {name,address,phone,birthdate}") 
です。
関連する問題