LOAD DATA LOCAL INFILE 在 MySQL 中只导入一行

Posted

技术标签:

【中文标题】LOAD DATA LOCAL INFILE 在 MySQL 中只导入一行【英文标题】:LOAD DATA LOCAL INFILE importing only one row in MySQL 【发布时间】:2013-01-13 01:52:11 【问题描述】:

使用 mysql 数据库,我想导入一个 13 列和 120 行的 csv 文件。我正在尝试将它们上传到表格中。

这是我的命令:

mysql> load data local infile 'restaurants.csv' 
       into table restaurants_restaurant fields        
       terminated by ',' enclosed by '"' lines terminated by '\n';

报告的内容如下:

Query OK, 1 row affected, 4 warnings (0.05 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 4

仅添加了 1 行,并且仅添加了部分?我做错了什么?

我的表结构:

class Restaurant(models.Model):
name = models.CharField(max_length=200)
category = models.CharField(max_length=200)
city = models.CharField(max_length=200)
location= models.CharField(max_length=200)
address= models.CharField(max_length=500)
phone_number= models.IntegerField()
email= models.CharField(max_length=200)
description= models.CharField(max_length=2000)
hours= models.CharField(max_length=200)
photos= models.CharField(max_length=200)
price= models.CharField(max_length=200)
rating= models.IntegerField()
review= models.CharField(max_length=2000)

我的 csv 的前 4 行:

American Burger,American,Dhaka,,,,,,,,2 to 4,4
ARIRANG,Korean,Dhaka,,"House 3, Road 51, Gulshan 2, Dhaka, Bangladesh.",(88-02) 989-6453,,,,,,
Aroma,,Dhaka,,,,,,,,15 to 20,3.5
Bacaru,,Dhaka,,,,,,,,,4

【问题讨论】:

我猜是列类型的细微不匹配...您介意使用表定义和 csv 文件的前几行编辑您的帖子吗? 您是否在这里寻找纯 SQL 解决方案? 莫腾怎么说。我们需要查看数据 希望其他信息有所帮助 我以前有过这个,是因为行终止字符错误。例如,如果导入文件是由 Mac 创建的,它可能是 \r 而不是 \n 【参考方案1】:

在您的 CSV 文件中,行分隔符是 (0D 0A)。因此,您需要使用 '\r\n' 作为行分隔符 -

...
lines terminated by '\r\n'

【讨论】:

mysql> 将数据本地 infile 'restaurants.csv' 加载到以 ';' 终止的表 Restaurants_restaurant 字段中由 '"' 包围的行以 '\r\n' (name) 结尾;查询正常,受影响 1 行,13 个警告(0.12 秒)记录:1 已删除:0 跳过:0 警告:13【参考方案2】:

如果您的表有任何违反数据文件行的唯一约束,那么LOAD DATA INFILE 将跳过它们,如本文所示:

https://***.com/a/20913896/445131

要么删除表上的所有唯一约束并重试,要么删除文本文件中每一行的每一列中的重复项并重试。

【讨论】:

以上是关于LOAD DATA LOCAL INFILE 在 MySQL 中只导入一行的主要内容,如果未能解决你的问题,请参考以下文章

LOAD DATA LOCAL INFILE 在 RDS 中不起作用

LOAD DATA LOCAL INFILE 在 MySQL 中只导入一行

LOAD DATA LOCAL INFILE 有时仅适用

mysql load data local infile问题

使用 LOAD DATA LOCAL INFILE,sysbench 导数速度提升30%

Load data local infile 实验报告