使用LOAD DATA LOCAL INFILE时出错

时间:2014-08-29 15:25:45

标签: mysql file-io load local

我正在尝试做什么:

我正在尝试使用LOAD DATA LOCAL INFILE。 我在我工作的服务器上有一个csv文件,我想加载到MySQL数据库中的表。我使用了以下内容:

LOAD DATA LOCAL INFILE '/var/www/load_data_test.csv'
INTO TABLE name_age 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

我的问题是什么:

我的问题是错误代码。当我在MySQL(HeidiSQL)中运行它时,我收到以下错误消息:

  

SQL错误(2):文件' \ var \ www \ load_data_test.csv'没找到(错误代码:2)

我尝试过的事情:

我搜索了这个问题,我点击的所有链接都引导我尝试以下内容:

  1. 将文件的权限设置为Octal: 7777。我已经为所有者,组和其他人授予了读,写和执行权限。这没用。我仍然收到与上面相同的错误消息。

  2. 取出MySQL语句中的LOCAL字。我将SQL命令的第一行更改为LOAD DATA INFILE '/var/www/load_data_test.csv'。这不起作用,并产生以下错误信息:
    SQL Error (29): File 'var/www/load_data_test.csv' not found (Errcode: 13)

  3. 将文件属性下的所有者切换为root。这不起作用。当我尝试这样做时,收到错误消息Command 'chown "root" "load_data_test.csv"' failed with return code 1 and error message chown: changing ownership of 'load_data_test.csv': Opertion not permitted.

  4. 可能的限制

    • 我缺乏与权限级别相关的知识。我以前从未真正使用过权限级别。

    • 我缺乏与LOAD DATA (LOCAL) INFILE命令相关的知识。我不熟悉这个MySQL命令,这是我第一次使用它。

    • 我在Linux或MySQL服务器上没有root访问权限。

    我100%确定我尝试加载到数据库表上的CSV文件是在服务器上,所以我很困惑为什么它甚至不会在第一时间识别它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我刚刚找到了解决自己问题的快速解决方案。发布它以防万一遇到这种情况的人也需要解决方案。

在HeidiSQL中,您可以通过GUI上传CSV文件,当您这样做时,它会为您提供文件上载的语法(GUI也使用LOAD DATA LOCAL INFILE命令)。我能够在我自己的计算机上使用以下语法将相同的CSV文件上传到我服务器上的MySQL表中:

LOAD DATA LOCAL INFILE 'C:\\Users\\acarella\\Desktop\\load_data_test.csv' 
INTO TABLE `ug_warehouse`.`name_age` 
FIELDS TERMINATED BY ',' 
IGNORE 1 LINES (`name`, `age`);

这可能是我第一次回答关于StackOverflow的问题,所以如果回答你自己的问题是非正统的,那么我将来会避免这样做。

- 安东尼