加载数据 infile 啥都不做
Posted
技术标签:
【中文标题】加载数据 infile 啥都不做【英文标题】: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 ***.com/questions/14127529/… 如果您的 csv 文件包含标题,那么您可能需要忽略标题。 LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test IGNORE 1 LINES; @ishantkaushik 已经尝试了 IGNORE 1 LINES,但仍然没有执行任何操作...谢谢! 【参考方案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 做同样的事情? ***.com/questions/31450389/… 完美!非常感谢,我结束了这个问题:D以上是关于加载数据 infile 啥都不做的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 Activity 在恢复时再次从顶部运行而不是啥都不做?