1

我正在尝试将文本文件导入 MySQL 数据库,但无法让第一个字段 (card_no) 完全填充到我的所有记录中。导入文件后(不会产生任何错误),第一条记录正确显示,但其他记录没有。谁能告诉我如何解决这个问题?- 如果它很重要,我正在使用 phpMyAdmin 来加载文件。 - 谢谢你的时间。

这是数据库的结构:

Field       Type            Collation         Attributes    Null    
card_no     smallint(6)                       Yes           NULL
name        varchar(100)    latin1_swedish_ci No    
artist      varchar(30)     latin1_swedish_ci Yes           NULL
color       varchar(25)     latin1_swedish_ci Yes           NULL
rarity      varchar(1)      latin1_swedish_ci Yes           NULL
expansion   varchar(50)     latin1_swedish_ci Yes           NULL

这是代码:

    LOAD DATA LOCAL INFILE 'C:\\xampp\\tmp\\php43.tmp'
    INTO TABLE `mtginfo` FIELDS TERMINATED BY ';'
    ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY ',';

这是导入的文件:

    "1";"Ajani Goldmane";"Aleksi Briclot";"White";"M";"Magic 2010",
    "2";"Angel's Mercy";"Andrew Robinson";"White";"C";"Magic 2010",
    "3";"Armored Ascension";"Jesper Ejsing";"White";"U";"Magic 2010",
    "4";"Baneslayer Angel";"Greg Staples";"White";"M";"Magic 2010",
    "5";"Blinding Mage";"Eric Deschamps";"White";"C";"Magic 2010"

这是输出示例:

    card_no name            artist          color   rarity  expansion
    1       Ajani Goldmane  Aleksi Briclot  White   M       Magic 2010
    0       Angel's Mercy   Andrew Robinson White   C       Magic 2010
    0       Armored Ascensi Jesper Ejsing   White   U       Magic 2010
    0       Baneslayer Ange Greg Staples    White   M       Magic 2010
    0       Blinding Mage   Eric Deschamps  White   C       Magic 2010
4

2 回答 2

1

所有新行都以一些空格开头。您应该处理它们,指定 LINES STARTING BY 子句,例如 -

LOAD DATA LOCAL INFILE 'd:\\1\\php43.tmp'
INTO TABLE 'C:\\xampp\\tmp\\php43.tmp'
FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\'
LINES STARTING BY '        ' TERMINATED BY ',';
于 2012-06-21T06:38:58.143 回答
0

我不确定回答您自己问题的协议是什么,所以如果其他人有这个问题,我会发布我刚刚发现的解决方案。-- 我的 CARD_NO 字段类型为 smallint,我正在尝试将非整数类型加载到其中。因此导入不会加载 char 类型(因为引号是 char),它会移动到下一个字段。- 再次感谢Devart的回答。虽然您的回复并没有纠正我的问题,但它确实让我更多地思考我的问题。

于 2012-06-21T16:07:50.623 回答