1

次のように MYSQL にファイルをインポートしています。

LOAD DATA LOCAL INFILE 'C:\\Users\\Justin.Mathieu\\Documents\\data.csv' into table Ingredients
fields terminated by ','
optionally enclosed by '"' 
lines terminated by '\n'
(iVendor, iName, iOrderNumber, iCaseQty, iUnitSize, iDrainSize, iUnitSoldBy, iCaseCost, iVolumeConversion, iUnitLabel, iIngredients)

インポート データの一部のサンプル:

VendorName,"Apple Whole Peeled Cored Grd A Fz",61318,1,\N,\N,\N,38.17,\N,\N,\N
VendorName,"Apples- Applesauce Sweetened",10738,6,\N,\N,-1,24,\N,\N,\N
VendorName,"Applesauce Unswtn Fancy",10676,6,106,\N,-1,23.97,\N,\N,"Apples, Water, Erythorbic Acid (To Maintain Color)"
VendorName,Apron 24"X42" White Reg Wt - Dispenser ,81463,1,\N,\N,\N,9.98,\N,\N,\N
VendorName,"Artichoke Heart 40-50Cnt Quartered,     Marintated",10722,6,88,\N,-1,71.46,\N,,"Artichoke Hearts, Vegetable Oil (Soya Or Sunflower), Water, Vinegar"
VendorName,"Artichoke Heart Crse Ct",77334,6,\N,55,\N,49.16,\N,\N,\N
VendorName,"Artichoke Heart Quarters",11804,6,\N,\N,-1,62.46,\N,\N,"Artichoke Hearts, Water, Salt And Citric Acid"
VendorName,"Artichoke Quarters Mixed Cuts",D6808,6,\N,\N,\N,60.26,\N,\N,\N
VendorName,"Bacon Bit Real Ref",56188,2,\N,\N,\N,51.22,\N,\N,\N
VendorName,"Barley Pearled Dry Us #1 Standard",33050,2,\N,\N,\N,21.38,\N,\N,\N

最初の問題は、\N の使用です。インポート後にデータベースを見ると、null を取得する代わりに、iIngredients フィールドに「N」が表示されます。

2番目の問題は、ほとんどの行がインポートされないことです。これは、私が得ているエラーのサンプルです:

164 row(s) affected, 64 warning(s): 
1262 Row 3 was truncated; it contained more data than there were input columns 
1262 Row 5 was truncated; it contained more data than there were input columns 
1262 Row 9 was truncated; it contained more data than there were input columns 
1262 Row 10 was truncated; it contained more data than there were input columns 
1262 Row 11 was truncated; it contained more data than there were input columns 
1262 Row 12 was truncated; it contained more data than there were input columns 
Records: 164  Deleted: 0  Skipped: 0  Warnings: 94

すべての行に、"" で囲まれるコンマを含む可能性のあるデータがあることを確認しました。

何が起こっているのでしょうか?

編集:文字列行には "" を、文字列以外の行には \N を使用するだけで、\N の問題を解決できました。

編集 2:切り捨てられた行では、iIngredients フィールドには、".

4

3 に答える 3

2

十分にうろついた後、私はそれを理解しました。

問題は、(C# で) null フィールドに「/N」を挿入するようにファイルを変換していたときに、次を使用していたことです。

Write(rowData + Environment.NewLine);

どうやらMySQLはそれを本当に気に入らなかったので、次のように変更しました。

Write(rowData + "\n");

それは十分にうまくいくように見えました。

于 2012-08-20T19:49:39.413 に答える
0

行区切り記号に問題があるようです。ファイル内で区切り記号が '\n' になっているかどうかを確認するか、LOAD DATA コマンドで '\r\n' を使用してみてください。

また、\N に問題はありません。そのまま動作します。

于 2012-08-21T05:42:01.517 に答える
0

mysql は改行の '\n' を認識しません

于 2013-11-08T15:39:46.173 に答える