【问题标题】:MySql file import (LOAD DATA LOCAL INFILE)MySql 文件导入(LOAD DATA LOCAL INFILE)
【发布时间】:2011-01-11 14:18:51
【问题描述】:

我有一张叫 city 的表:

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| country_id | mediumint(9) | NO   | MUL | NULL    |                |
| region_id  | bigint(20)   | NO   | MUL | NULL    |                |
| city       | varchar(45)  | NO   |     | NULL    |                |
| latitude   | float(18,2)  | NO   |     | NULL    |                |
| longitude  | float(18,2)  | NO   |     | NULL    |                |
| timezone   | varchar(10)  | NO   |     | NULL    |                |
| dma_id     | mediumint(9) | YES  |     | NULL    |                |
| code       | varchar(4)   | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

我有一个简单的文件(只是一个测试文件)要导入:

"id","country_id","region_id","city","latitude","longitude","timezone","dma_id","code"
42231,1,833,"Herat","34.333","62.2","+04:30",0,"HERA"
5976,1,835,"Kabul","34.517","69.183","+04:50",0,"KABU"
42230,1,852,"Mazar-e Sharif","36.7","67.1","+4:30",0,"MSHA"
42412,2,983,"Korce","40.6162","20.7779","+01:00",0,"KORC"
5977,2,1011,"Tirane","41.333","19.833","+01:00",0,"TIRA"
5978,3,856,"Algiers","36.763","3.051","+01:00",0,"ALGI"
5981,3,858,"Skikda","36.879","6.907","+01:00",0,"SKIK"
5980,3,861,"Oran","35.691","-0.642","+01:00",0,"ORAN"

我运行这个命令:

LOAD DATA LOCAL INFILE 'cities_test.txt' INTO TABLE city FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;

输出:

Query OK, 0 rows affected (0.00 sec)
Records: 0  Deleted: 0  Skipped: 0  Warnings: 0

没有插入记录,我不知道为什么。

有什么想法吗?

谢谢!

杰米

【问题讨论】:

    标签: mysql load-data-infile


    【解决方案1】:

    解决了。愚蠢的错误。

    不得不改变这个:

    LINES TERMINATED BY '\r\n'
    

    到这里:

    LINES TERMINATED BY '\n'
    

    :-)

    【讨论】:

      【解决方案2】:

      我在 mac 上遇到了同样的问题, 如果您使用的是 mac,请尝试此操作

      LOAD DATA INFILE 'sqlScript1.txt' INTO TABLE USER
      FIELDS TERMINATED BY ','  LINES STARTING BY '\r';
      

      【讨论】:

        【解决方案3】:

        我有同样的问题,但我试试这个,删除第一行

        `("id","country_id","region_id","city,"latitude","longitude",
                          "timezone","dma_id","code")` in your file to import.
        

        现在当你运行命令并这样写

        mysql> LOAD DATA LOCAL 
            INFILE 'cities_test.txt' 
            INTO TABLE city FIELDS TERMINATED BY ','  
            LINES TERMINATED BY '\n';
        

        仅此而已。

        它对我有用:D

        【讨论】:

        • 我遇到了同样的问题,我使用的是 Windows 10 64 位版本。 MySQL Workbench 是 64 位版本 8.0.12。我的数据文件在 Notepad++ 中打开时在末尾显示换行符。我必须取出第一行并使用LINE TERMINATED BY '\n',它可以工作。
        【解决方案4】:

        对我来说,在 mac 上工作的是

        LOAD DATA LOCAL 
            INFILE 'cities_test.txt' 
            INTO TABLE city FIELDS TERMINATED BY ','  
            LINES TERMINATED BY '\r';
        

        由于 Mac 使用回车作为换行符,因此您必须使用 '/r'

        【讨论】:

        • 这有效地重申了六年前目前接受的答案。您添加的哪些内容可能对其他人有用?
        • 简短解释为什么在 Mac 上必须使用 '/r' 而不是 '/n'
        • 自 2001 年 OS X 10.0 发布以来,OS X(或者更确切地说是 macOS)没有使用 \r 作为换行符(请参阅超级用户上的 this question
        • 知道了,那为什么在OSX上的某些类型的SQL中仍然使用它?
        • 您使用的是哪种 SQL 方言?
        猜你喜欢
        • 2013-01-14
        • 2013-09-24
        • 2012-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-13
        • 2012-06-01
        相关资源
        最近更新 更多