【问题标题】:What is the error in my syntax preventing me from loading my data file into mysql我的语法有什么错误阻止我将数据文件加载到 mysql 中
【发布时间】:2016-04-17 05:44:21
【问题描述】:

我正在尝试将 .txt 文件上传到我刚刚创建的 sql 数据库中。

我能够使用INSERT INTO 将几行数据加载到表中,但是当我尝试使用LOAD DATA LOCAL INFILE '/pathto/file.txt' INTO TABLE mytable 时,它首先给了我一个错误,即我的mysql 版本不允许该命令。

所以在我阅读How can I correct MySQL Load Error 之后,我使用了--local-infile=1 -u mysqlname -p 后跟上面的命令,我一再被授予语法错误。

我已经尝试使用上述各种不同组合加载 .txt 文件,但仍然出现两个错误之一。

以下是屏幕截图。

这是 ubuntu 15.10 和 mysql 版本 5.6.28-0ubuntu0.15.10.1。

相关终端的屏幕截图

【问题讨论】:

  • 你是从windows操作系统迁移过来的吗? ubuntu 是 unix 系统所以它区分大小写,尝试检查你的表和列名应该相同
  • 我在问题中使用了泛型名称,所有表格和文件的名称都是正确的,如屏幕截图所示。不,我没有在严格意义上的 Windows Ubuntu 上使用过任何这些
  • 您是否尝试仅从文本文件中插入 1 行?
  • 使用“插入”命令?是的。它工作得很好。但这不是来自 .txt 文件,我是直接从 cl 中完成的。
  • 尝试使用notepad++等工具查看你的文本文件,你的文本文件中的回车符是什么?

标签: mysql ubuntu syntax


【解决方案1】:

--local-infile 是服务器和客户端参数。作为 LOAD DATA 或 INSERT 语句等语句的一部分,它不是有效的语法。

您可以在 my.cnf 文件的适当部分中指定服务器变量和选项,或者作为正在执行的 MySQL 程序的命令行参数。

例如,在操作系统提示符下...

# mysql -h myserverhost -u mysqlname -p --local-infile=1 

必须为 MySQL 服务器指定该选项。

如果您以 user@localhost 身份连接,则不需要 LOCAL。您可以授予 MySQL 用户(运行 mysql 服务器的任何操作系统用户)对您要加载的文件的读取权限...chmod ugo+r /mypath/myfile(并在路径中的目录上读取执行。

如果 msyql 用户不是 @'localhost',您只需要 LOCAL。

【讨论】:

  • 好的,所以在登录 MySQL 时指定 '--local-infile=1',这应该给我使用 "load data infile '/path/file.txt into table mytable 的权限" 命令,将防止语法错误。
  • 并省略“本地”,因为那是多余的
  • 这不是多余的。要么你两者都需要,要么你都不需要。像您正在做的那样连接到 MySQL,您将在其中运行 LOAD DATA 语句。运行此 SQL 语句... SELECT USER()。如果返回以“@localhost”结尾的值,则不需要 LOCAL 关键字。否则,您确实需要 LOCAL 关键字。没有这个秘密的巫术。这在 MySQL 参考手册中有充分的记录。
  • 用户是 root@local 主机,但是当我尝试不使用 LOCAL 时,它给了我错误 ERROR 29 (HY000): File '/home/mkaepernik/Documents/soiree.txt' not找到(错误代码:13 - 权限被拒绝)。无论如何,我尝试使用 LOCAL 并且它有效,它上传了我的数据。我想我将 '--local-infile=1' 包含在错误的位置,但是您建议在登录时包含它就足够了。
  • LOCAL 关键字指定 MySQL client 将读取文件,并将行传递给服务器。如果没有 LOCAL 关键字,我们会告诉 MySQL server 查看服务器框以读取文件。鉴于您以“@localhost”的身份连接,您实际上并不需要 LOCAL 关键字。报告“权限被拒绝”的错误意味着 MySQL 服务器 无法读取文件,因为文件(或文件路径中的目录)的操作系统权限阻止 MySQL 读取文件。正常的操作系统安全问题。
猜你喜欢
  • 2020-02-11
  • 1970-01-01
  • 2019-09-30
  • 2022-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
相关资源
最近更新 更多