0

好的,我正在尝试将 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

table 看起来所有东西都试图塞进第一个字段,但它只能容纳前 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 回答