【问题标题】:Load data infile does nothing加载数据 infile 什么都不做
【发布时间】:2021-12-25 02:39:12
【问题描述】:

我对 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:数据库架构:

【问题讨论】:

  • 你能显示表格的架构吗?
  • 是的,正在上传和编辑。
  • 看看这个是否有帮助 @LuisGarcíaTíscar stackoverflow.com/questions/14127529/…
  • 如果您的 csv 文件包含标题,那么您可能需要忽略标题。 LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test IGNORE 1 LINES;
  • @ishantkaushik 已经尝试了 IGNORE 1 LINES,但仍然没有执行任何操作...谢谢!

标签: mysql mysql-workbench load-data-infile


【解决方案1】:

错误来自这样一个事实,即 客户端和服务器都必须启用一个选项以允许导入本地数据文件。如果你使用命令行客户端,你需要像这样打开客户端:

mysql --local-infile -u root -p

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

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

另请参阅ERROR 1148: The used command is not allowed with this MySQL version 或我对"mysql 8.0" local infile fails I tried and display the settings. Could it be permission issues? 的回答

错误消息异常模糊。 MySQL 错误消息通常更准确和信息丰富。 I logged a bug in 2019 请求改进的错误消息,他们确实在 MySQL 8.0 中修复了它。

【讨论】:

  • 谢谢!使用 --local-infile 通过 cmd 访问就可以了。有没有办法对 MySQL WorkBench 做同样的事情?
  • 完美!非常感谢,我结束了这个问题:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2015-06-21
  • 1970-01-01
相关资源
最近更新 更多