首页 > 解决方案 > 加载数据 infile 什么都不做

问题描述

我对 SQL 有点陌生。我正在尝试将数据添加到一个已经创建的表中,csv 看起来像这样,它有 132645 行长:

iso_code;continent;location;date;population;total_cases;new_cases;new_cases_smoothed;total_deaths;new_deaths;new_deaths_smoothed;total_cases_per_million;new_cases_per_million;new_cases_smoothed_per_million;total_deaths_per_million;new_deaths_per_million;new_deaths_smoothed_per_million;reproduction_rate;icu_patients;icu_patients_per_million;hosp_patients;hosp_patients_per_million;weekly_icu_admissions;weekly_icu_admissions_per_million;weekly_hosp_admissions;weekly_hosp_admissions_per_million
AFG;Asia;Afghanistan;24/02/2020;398354280;50;50;NULL;NULL;NULL;NULL;126;126;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;
AFG;Asia;Afghanistan;25/02/2020;398354280;50;0;NULL;NULL;NULL;NULL;126;0;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;
AFG;Asia;Afghanistan;26/02/2020;398354280;50;0;NULL;NULL;NULL;NULL;126;0;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;
AFG;Asia;Afghanistan;27/02/2020;398354280;50;0;NULL;NULL;NULL;NULL;126;0;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;
AFG;Asia;Afghanistan;28/02/2020;398354280;50;0;NULL;NULL;NULL;NULL;126;0;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;NULL;

我的 sql 查询是这样的:

LOAD DATA LOCAL INFILE 'C:\\Users\\Usuario\\Desktop\\CovidDeaths.csv' INTO TABLE coviddeaths
columns terminated by ';'
LINES TERMINATED BY '\r\n';

我已经使用导入向导将一些数据上传到 coviddeaths 表,但上传速度非常慢,因此尝试使用 LOAD DATA INFILE 查询完成导入。要查看已经上传了多少行,我使用了

select count(*) from coviddeaths;

并抛出:

count(*)
11312

当我尝试运行 LOAD DATA LOCAL INFILE 查询时,没有任何反应。鼠标指针旋转了一秒钟,就像它试图运行它一样,但它没有添加任何额外的行。它不会像我读过的 错误代码那样抛出任何错误:1148。此 MySQL 版本不允许使用使用的命令。我还尝试将 csv 文件放在 Uploads 文件夹中,我的 Secure File Priv 选项在 my.ini 中指向该文件夹:

# Secure File Priv.
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"

它什么也不做。有任何想法吗?

提前致谢!

编辑 2:数据库模式:

在此处输入图像描述

在此处输入图像描述

标签: mysqlmysql-workbenchload-data-infile

解决方案


该错误来自客户端和服务器必须启用允许导入本地数据文件的选项。如果您使用命令行客户端,则需要像这样打开客户端:

mysql --local-infile -u root -p

此外,需要使用该local-infile选项配置 MySQL 服务器。

secure-file-priv不需要,因为它控制在服务器上导入或导出文件,而不是从客户端。

另请参阅错误 1148:此 MySQL 版本不允许使用的命令或我对“mysql 8.0”本地 infile 的回答失败我尝试并显示设置。会不会是权限问题?

错误消息异常模糊。MySQL 错误消息通常更准确和信息丰富。我在 2019 年记录了一个错误以请求改进错误消息,他们确实在 MySQL 8.0 中修复了它。


推荐阅读