ubuntu中mysql使用load data导入数据

刚装的ubuntu,装好mysql后想用load data infile命令导入数据到表中,产生下面错误”ERROR 29 (HY000): File ‘/home/bioinformation/Downloads/data.txt’ not found (Errcode: 13)”,

然后查了一下load data语法

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char' ]
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]]

LOAD DATA INFILE 语句以很高的速度从一个文本文件中读取行到一个表中。文件名必须是一个文字字符串。

发现没有问题,这时我就众权限来入手了将mysql用户改为”root”后还是不行,后来上网查了一下,要么不知所云,要么是觉得方法太复杂,而是想,这个错误的意思是找不到文件,那把这个文件复制到mysql数据库所在的文件不就行了,在安装mysql的时候没有注意,不知道mysql安装在哪里,如是想与其自己找,不如让它自己告诉我,而是load时用了个相对路径

 代码如下 复制代码

”load data infile ‘data.txt’ into table table_name”,

果然mysql报错时就显示了” Can’t get stat of ‘/var/lib/mysql/test/data.txt’ (Errcode: 2)”,而是用“/home/bioinformation/Downloads/data.txt”复制为“/var/lib/mysql/test/data.txt”,结果发现用户没有权限,果断用”sudo su”切换到root用户,OK后,再运行

 代码如下 复制代码

”load data infile ‘data.txt”

,果然成功了,显示“Query OK,……”,再将用户切换到正常用户就行了,现总结如下,很简单,先用root用户将用户复制到mysql数据库所在文件夹,运用相对路径“load data infile ‘data.txt’ into table table_name”就可以了。

如何提高mysql load data infile的速度

测试数据2.5G,共有数据9427567条。用的mysql的large服务器的配置。
load一次需要大概10分钟左右。
建的表用的是MYISAM,调整了几个session的参数值

 代码如下 复制代码
SET SESSION BULK_INSERT_BUFFER_SIZE=256217728;
SET SESSION MYISAM_SORT_BUFFER_SIZE=256217728;

运行结果如下

 代码如下 复制代码
Query OK, 9427567 rows affected, 1558 warnings (3 min 55.21 sec)
Records: 9427567 Deleted: 0 Skipped: 0 Warnings: 0

google到的还可以

 代码如下 复制代码

set global KEY_BUFFER_SIZE=256217728;
alter table tablename disable keys;

如何load不同编码的数据

原来用的4.X的mysql,我是select INTO OUTFILE ,只后用iconv,或者其他软件来做。可以参考这里,但是由于这次数据大,用ultraedit等软件打开都要半天。好在新版的mysql可以增加一个新的参数
CHARACTER SET gbk
我的文本数据是GBK的编码,数据表是utf8的,用这种方法测试成功。
如何load的时候只insert特定的列
比如表里面有比元数据多的列。可以在load的时候指定要插入的字段名字。

示例的代码如下:

 代码如下 复制代码
LOAD DATA INFILE '~/data.txt'  
INTO TABLE fb0505  
CHARACTER SET  gbk  
FIELDS TERMINATED BY 't' ENCLOSED BY '' ESCAPED BY ''
LINES TERMINATED BY 'n' STARTING BY '' 
(seller_id,fb_type,fb_date,item_url);

其中表fb0505里面还有一列是id。

时间: 2024-09-27 01:57:04

ubuntu中mysql使用load data导入数据的相关文章

MySQL用load data命令进行数据导入方法

LOAD DATA语法说明: LOAD DATA INFILE句法 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 TE

Centos中mysql数据库安装配置与数据导入/备份

1.安装配置Mysql :本文安装的系统为Centos6.3:  代码如下 复制代码 yum list mysql # 查看有没有安装包 yum install mysql #  安装mysql客户端 yum list mysql-server # 查看有没有安装包 yum install mysql-server # 安装mysql 服务器端 #安装过后需要启动mysql服务 service mysqld start #或者/etc/init.d/mysqld start # 启动过后需要给m

mysql命令行source导入数据中文乱码

进入mysql dos命令页面,方法 从DOS界面进入Mysql数据库的命令行管理界面,找到mysql的安装位置并cd进入,一般为"...mysql\bin\":输入 " mysql -u root -p " 后回车,然后要求输入密码.此时输入密码之后,就可以进入mysql数据库了.这时候命令行变为"mysql->". 测试  代码如下 复制代码 mysql>use dbtest; mysql>set names utf8; m

mysql中Load Data记录换行问题的解决方法_Mysql

问题是这样的: 表persons有两个字段: id和name文本文档persons.txt中内容(其中每行字段之间用tab分割):1    Bush2    Carter3    Bush 在mysql命令行下使用 load data local infile "persons.txt" into table persons 导入数据到persons表中. 导入后查看persons表的数据,与persons.txt的内容一致.但是使用语句select distinct name fro

Load Data Infile批量导入数据

mysql提供了一个  load data infile xxx into table table_name  的方法来帮助批量的导入数据.这个操作是 select * out to file 操作的逆操作. 大体的使用方式是: shell>mysql -hxx -uxx -pxx database mysql>set names utf8; mysql>load data infile '/path_to_file/xx.csv' into table xx ; 但是在遇到文件不在my

《R语言数据分析》——1.4 从数据库中导入数据

1.4 从数据库中导入数据 使用一个专用的数据库测试平台比根据需要从磁盘中导入文件效率要高很多,这是由数据库本身特性决定的: 对大数据表的访问速度更快 在数据导入R前,提供了更快更有效的数据聚集和筛选方法 相比电子表格以及R对象实现的传统矩阵模型,能够提供更加结构化的关系 数据模型来存储数据 提供对数据的连接及合并操作 在同一时间支持对多个客户端的并发远程访问 提供了安全和有限的访问 提供可扩展及可配置的数据存储后台 DBI包提供了数据库操作的接口,可以作为R和不同关系数据管理系统(Relati

《R语言与数据挖掘最佳实践和经典案例》—— 2.3 从SAS中导入数据

2.3 从SAS中导入数据 foreign包[R-core,2012]提供了函数read.ssd(),该函数可以将SAS中的数据集(.sas7bdat文件)导入R中.下面是成功导入数据所需要遵循的几个关键点: 你的计算机中必须成功安装了SAS,函数read.ssd()将调用SAS来读取SAS数据集,并将读取的数据集导入R中. SAS数据集的文件名长度不能超过8个字符.否则,数据的导入将会失败.而从.CSV文件中导入数据集时没有该限制. 在数据导入的过程中,如果变量名超过8个字符将会被截断为8个字

SQL Server数据库中批量导入数据的2种方法_MsSql

在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题.其实,在SQL Server中集成了很多成批导入数据的方法.有些项目实施顾问头疼的问题,在我们数据库管理员眼中,是小菜一碟.现在的重点就是,如何让用户了解这些方法,让数据导入变得轻松一些.相信以下方法大家都用过了,温故而知新哈,如果有更好的方法希望大家都提出来~ 一.使用Select Into语句 若企业数据库都采用的是SQL Server数据库的话,则可以利用Select Into语句来实现数据的导入.Select Into语句,他的

Ubuntu中更改MySQL默认编码报错的解决

Ubuntu 12.04,安装了MySQL,完了之后,更改了字符编译,就报错.感觉很郁闷. 环境: root@ubuntu:~# uname -a Linux ubuntu 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 使用的  apt-get install mysql-server安装的,然后改变了一下默认的字符集,在/etc/mysql/my.cnf里面