WINDOWS 上的 MySQL LOAD DATA LOCAL INFILE 不工作

原文 标签 mysql file-io load local

我正在使用安装了 MySQL 8.0 的 Windows。

我已经检查了已经发布在 stackoverflow 上的解决方案,但这些解决方案没有立竿见影的效果。

我已经用 SET GLOBAL local_infile = 1; 设置了全局变量
此选项现在似乎已启用,但 MySQL 不断抛出以下错误:

错误代码:

  1. The used command is not allowed with this MySQL version


谁能帮我纠正这种行为?

最佳答案

尝试:

文件:Z:\Path\To\MySQL\Files\my_file.csv :

1,"a string"
2,"a string containing a , comma"
3,"a string containing a \" quote"
4,"a string containing a \", quote and comma"

MySQL命令行:

Z:\>mysql
Enter password: **************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 8.0.11 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> DROP TABLE IF EXISTS `_`.`my_table`;
Query OK, 0 rows affected, 1 warning (0.03 sec)

mysql> CREATE TABLE IF NOT EXISTS `_`.`my_table` (
    ->   `col0` INT NOT NULL PRIMARY KEY,
    ->   `col1` VARCHAR(50) NOT NULL
    -> );
Query OK, 0 rows affected (0.45 sec)

mysql> SHOW VARIABLES WHERE `variable_name` = 'secure_file_priv';
+------------------+-------------------------+
| Variable_name    | Value                   |
+------------------+-------------------------+
| secure_file_priv | Z:\Path\To\MySQL\Files\ |
+------------------+-------------------------+
1 row in set (0.00 sec)

mysql> LOAD DATA LOCAL INFILE 'Z:\\Path\\To\\MySQL\\Files\\my_file.csv'
    ->   INTO TABLE `_`.`my_table`
    ->   FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    ->   LINES TERMINATED BY '\r\n';
ERROR 1148 (42000): The used command is not allowed with this MySQL version

mysql> SELECT @@GLOBAL.`local_infile`;
+-------------------------+
| @@GLOBAL.`local_infile` |
+-------------------------+
|                       0 |
+-------------------------+
1 row in set (0.00 sec)

mysql> SET @@GLOBAL.`local_infile` := 1;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@GLOBAL.`local_infile`;
+-------------------------+
| @@GLOBAL.`local_infile` |
+-------------------------+
|                       1 |
+-------------------------+
1 row in set (0.00 sec)

mysql> LOAD DATA LOCAL INFILE 'Z:\\Path\\To\\MySQL\\Files\\my_file.csv'
    ->   INTO TABLE `_`.`my_table`
    ->   FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    ->   LINES TERMINATED BY '\r\n';
ERROR 1148 (42000): The used command is not allowed with this MySQL version

mysql> SELECT `col0`, `col1`
    -> FROM `_`.`my_table`;
Empty set (0.00 sec)

mysql> exit
Bye

Z:\>mysql --local-infile=1
Enter password: **************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 8.0.11 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT @@GLOBAL.`local_infile`;
+-------------------------+
| @@GLOBAL.`local_infile` |
+-------------------------+
|                       1 |
+-------------------------+
1 row in set (0.00 sec)

mysql> LOAD DATA LOCAL INFILE 'Z:\\Path\\To\\MySQL\\Files\\my_file.csv'
    ->   INTO TABLE `_`.`my_table`
    ->   FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    ->   LINES TERMINATED BY '\r\n';
Query OK, 4 rows affected (0.19 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT `col0`, `col1`
    -> FROM `_`.`my_table`;
+------+------------------------------------------+
| col0 | col1                                     |
+------+------------------------------------------+
|    1 | a string                                 |
|    2 | a string containing a , comma            |
|    3 | a string containing a " quote            |
|    4 | a string containing a ", quote and comma |
+------+------------------------------------------+
4 rows in set (0.00 sec)

关于WINDOWS 上的 MySQL LOAD DATA LOCAL INFILE 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50699458/

相关文章:

mysql - 如何根据用户是否在该组中选择表中的一组行

php - 将数据插入表错误

javascript - 到达 html 页面的末尾是否等于 "page loaded"?

jquery - 如何获取jquery加载功能的URL中提供的参数?

mysql - AWS Kinesis Firehose不在Redshift中插入数据

mysql - 连接选择中的 Where 子句

java - 该文件是否被其他应用程序访问

c - C程序如何确定并打印其自己的可执行文件的位置?

c++ - 使用fstream从C++中的* .txt文件读取数字

linux - 用于 CPU 负载监控的 Shell 脚本