0

OK、テーブルに txt ファイルをアップロードしようとしています。私の問題はフィールドターミネーターにあります。いくつかのキャラクターを使用してみましたが、何も機能したくありません。私の最後の試みは「。」でした。

txt ファイル:

John. B. Smith. 123456789. 1955-01-09. 731 Fondren, Cary, NC. M. 30000. 333445555. 5.   
Franklin. T. Wong. 333445555. 1945-12-08. 638 Voss, Cary, NC. M. 40000. 888665555. 5. 
Alicia. J. Zelaya. 999887777. 1958-07-19. 3321 Castle, Apex, NC. F. 25000. 987654321. 4.
Jennifer. S. Wallace. 987654321. 1931-06-20. 291 Berry, Garner, NC. F. 43000. 888665555. 4.
Ramesh. K. Narayan. 666884444. 1952-09-15. 975 Fire Oak, Angier, NC. M. 38000. 333445555. 5.
Joyce. A. English. 453453453. 1962-07-31. 5631 Rice, Raleigh, NC. F. 25000. 333445555. 5.
Ahmad. V. Jabbar. 987987987. 1959-03-29. 980 Dallas, Cary, NC. M. 25000. 987654321. 4.
James. E. Borg. 888665555. 1927-11-10. 450 Stone, Cary, NC. M. 55000. NULL. 1.

MySQL コード:

mysql> load data local infile 'c:/employee upload2.txt' into table employee
    -> fields terminated by '.' lines terminated by '\n';
Query OK, 8 rows affected, 80 warnings (0.02 sec)
Records: 8  Deleted: 0  Skipped: 0  Warnings: 80

テーブルはすべてが最初のフィールドに詰め込もうとしているように見えますが、最初の 8 文字しか保持できません。何か案は?

4

1 に答える 1

1

あなたのデータ形式は良くありません。これが機能することを希望する場合は、一貫したフィールド区切り文字が必要です。住所フィールド (またはサンプル データには示されていませんが名前フィールド) などの他のフィールド内のスペースをエスケープせずに、スペースで区切られた値を使用することはできません。

また、このファイルには列見出しがありません。

スペース区切りの代わりにタブ区切りの値を使用した場合、これはLOAD DATA INFILEフィールド区切り記号、エスケープ、および行区切り記号のデフォルト設定で問題なく機能します (\n実際に行区切り記号であると仮定します)。

MySQL のデフォルトの動作 (区切り文字、フィールド エンコルシング文字、エスケープ シーケンス、または行の開始文字と終了文字に何も指定されていない場合) は次のとおりです。

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''

クエリを一致させて同じ設定を使用する限り、データセットで好きな文字を使用できることは明らかです。

スペース区切りに固執したい場合は、次のようにすることができます

FIELDS TERMINATED BY ' ' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''

また"、フィールド (またはすべてのフィールド) にスペースが含まれる可能性のあるフィールドを囲むか、フィールド データ内のすべてのスペースを でエスケープします\\。二重引用符で囲まれたフィールド内にある場合は、スペースをエスケープする必要はありません。

于 2012-11-28T01:21:03.660 に答える