有两点要注意,
一你的服务器端要将 local_infile 参数打开
mysql> SHOW VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)mysql>
同时客户端也要打开这个参数
一你的服务器端要将 local_infile 参数打开
mysql> SHOW VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)mysql>
同时客户端也要打开这个参数
解决方案 »
- 如何用mysql workbench导出数据库
- 求这样一个查询语句!取出不连续记录
- navicat创建存储过程
- 求助一句sql语句
- sql2000 存储过程,转成mysql 存储过程,哪位帮忙转化一下呀
- 关于MY SQL的视图,希望大家帮忙,在线等
- mysql怎么备份整个数据库呀,数据库表结构和数据,用mysqldump.exe总备份不了,参数不对,那位给个例子
- #100 mysql中to_number用什么代替?
- 如何在mysql中保存图片信息?
- 询问一个CASE语句的问题!两组代码的区别和结果异同!
- 如何制作精简的“MySQL+ADO+应用软件”的安装程序?
- 在MYSQL中怎样建立外码?怎样使两个字段合起来成为主码?谢谢!
默认是都可以的啊!
格式:
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY '\t']
[OPTIONALLY] ENCLOSED BY '']
[ESCAPED BY '\\' ]]
[LINES TERMINATED BY '\n']
[IGNORE number LINES]
[(col_name,...)]LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中。如果指定LOCAL关键词,从客户主机读文件。如果LOCAL没指定,文件必须位于服务器上。(
只能改my-huge,my-large,my-media,my-small等的conf文件!!
默认就是开的阿!
我这里没有连接客户机阿 就是在自己机子上的load data阿
我的local_infile是on的阿
请高手指点阿 我要使用它阿 但是现在都不知道怎么使用阿
很不幸,
你在使用
mysql.exe --local-infile 无法实现功能
而
mysqlc.exe 却可以
用 API 连接时
mysql_options(... MYSQL_OPT_LOCAL_INFILE, 0)
的确是产生作用的,屏幕结果如下:Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-1998 Microsoft Corp.D:\>cd mysql\binD:\mysql\bin>mysql --local-infile=1 -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 33 to server version: 4.0.12-nt-logType 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql> use test;
Database changed
mysql> LOAD DATA LOCAL INFILE 'L:/me.csv' INTO TABLE test.me FIELDS
-> TERMINATED BY ',' LINES TERMINATED BY '\n' (id,value);
ERROR 1148: The used command is not allowed with this MySQL version
mysql> exit;
ByeD:\mysql\bin>mysqlc -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 34 to server version: 4.0.12-nt-logType 'help' for help.mysql> LOAD DATA LOCAL INFILE 'L:/me.csv' INTO TABLE test.me FIELDS
-> TERMINATED BY ',' LINES TERMINATED BY '\n' (id,value);
Query OK, 14 rows affected (0.00 sec)
Records: 14 Deleted: 0 Skipped: 0 Warnings: 0mysql>
按照 MySQL 的要求,
在服务器端需要在 my.cnf/my.ini 中加入
[mysqld]
local-infile =1
# 当然如果不加的话 mysqld 服务也是默认将这个开关打开的,
# 这是为了与以前的程序兼容在客户端同样要将它打开
通常来说客户端可以分两类
1:MySQL 安装包中自带的 mysql.exe mysqlc.exe
2: 通过 API 访问在 MySQL 参考手册中说明,为了与以前的程序兼容
mysql.exe mysqlc.exe 在编译时默认是打开 local-infile 开关的,
可以事实却不能使我相信??
不论我以默认的 mysql -u root -p 还是 mysql --local-infile=1 -u root -p 登录
均不能正确执行 LOAD DATA LOCAL INFILE
而只有 mysqlc.exe 程序可以,当然它是不可以使用 mysqlc --local-infile 开关的, 我查阅了 MySQL 的网站支持,
也有好多人有这样的疑惑,
在十几个回复中只有一人说通过 mysql --local-infile=1 实现了正常操作
而通过 API 访问 MySQL 则顺利地多,
mysql_options(... MYSQL_OPT_LOCAL_INFILE, 0) 是起作用的,
在 MySQL 4.1 的 mysql.exe 中,--local-infile=0 任何作用,
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-1998 Microsoft Corp.D:\>cd mysql41D:\MySQL41>cd binD:\MySQL41\bin>mysql --local-infile=0
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 43 to server version: 4.0.12-nt-logType 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql> use test;
Database changed
mysql> LOAD DATA LOCAL INFILE 'L:/me.csv' INTO TABLE test.me FIELDS TERMINATED B
Y ',' LINES TERMINATED BY '\n' (id,value);
Query OK, 14 rows affected (0.01 sec)
Records: 14 Deleted: 0 Skipped: 0 Warnings: 0mysql> exit;
ByeD:\MySQL41\bin>mysql --local-infile=1
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 44 to server version: 4.0.12-nt-logType 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql> use test;
Database changed
mysql> LOAD DATA LOCAL INFILE 'L:/me.csv' INTO TABLE test.me FIELDS TERMINATED B
Y ',' LINES TERMINATED BY '\n' (id,value);
Query OK, 14 rows affected (0.00 sec)
Records: 14 Deleted: 0 Skipped: 0 Warnings: 0mysql>
我要是这样运行的话mysql --local-infile=1 -u root -p 回车了之后怎么出现Enter password:这个要求我输入的究竟是什么密码?我不输直接按回车出现的错误是:
error 1045: Access denied for user:'[email protected]'(Using password :NO) 这究竟是什么问题我倒现在还是比较模糊 谢谢指点
但是要是用mysqlc的时候可以操作 而且我后面的那些terminated都不用输
直接就是load data local infile "111.txt" into table table_name;
这样就可以操作成功了
你说后面这个FIELDS TERMINATED B
Y ',' LINES TERMINATED BY '\n' (id,value);
不输 会不会影响操作?
local-infile =1
# 当然如果不加的话 mysqld 服务也是默认将这个开关打开的,
# 这是为了与以前的程序兼容
>>>> 我要是这样运行的话mysql --local-infile=1 -u root -p 回车了之后
>>>> 怎么出现Enter password:这个要求我输入的究竟是什么密码?
>>>> 我不输直接按回车出现的错误是:
>>>> error 1045: Access denied for user:'[email protected]'(Using password :NO)
>>> 这究竟是什么问题我倒现在还是比较模糊 谢谢指点
这主要是你的用户权限问题,>>>> 为什么我照着你的方法mysql --local-infile=1 -u root -p
>>>> 这样登录还是不能正确使用LOAD DATA LOCAL INFILE前面的我已说明了,这可以是 BUG
>>>> 但是要是用mysqlc的时候可以操作 而且我后面的那些terminated都不用输的确如此,
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n' 这两个字符是默认的字段与记录分隔字符
如果你的文本文件中数据字段与记录分隔不是用这它,
可能就要明确指定一下了