2012-11-28 47 views
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 

表看起来像一切试图塞进了第一场,但只能容纳前8个字符。 任何想法?

+1

你也应该显示你的查询。如果您使用的是默认分隔符,这肯定无法工作。 –

+1

该地址是一个问题。您可能需要重新引用包含所有字段的此文件。 –

回答

1

您的数据格式不好。如果你希望这个工作有任何希望,你需要一个一致的字段分隔符。您不能使用空格分隔的值,而不会转义地址字段(或名称字段,但未在示例数据中显示)等其他字段中的空格。

您也不会在此文件中具有列标题。

如果你只是使用制表符分隔值,而不是用空格分开的,这会工作得很好用默认的字段分隔符LOAD DATA INFILE设置,逃逸,行分隔符(假设\n实际上是你的行分隔符)

的MySQL默认的行为(如果分隔符,现场encolsing字符转义序列或线路开始和结束chracters没有指定是这样的:

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 '' 

并把周围将可能在他们的空间(或所有字段)的任何字段"或逃避所有的空间内现场数据为\\。如果它们位于由双引号括起来的字段内,则不需要转义空格。

+0

那么我可以在一致的字段分隔符处使用什么字符? 列标题在复制和粘贴时出错。 – SkyVar

+0

@ user1858304正如我上面提到的,如果你只是改变你的空格分隔符作为制表符分隔符,你应该没问题,因为我怀疑你在任何你需要转义的数据字段中使用制表符。如果这有帮助,我已将默认的MySQL行为添加到上面的答案中。 –

+0

也许我做错了什么,但它仍然没有工作,事实上,我在文本文件中的所有内容都试图填写第一个字段,其余字段记录为空。我将字段终结符更改为/ t,但这不起作用。每个领域由一个空间分隔。 – SkyVar