mysql load data infile
如何提高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
数据里面带反斜杠(backslash)”\” 的数据
由于如果你没有指定FIELDS子句,则默认值为假设您写下如下语句时的值:
FIELDS TERMINATED BY ‘\t’ ENCLOSED BY ” ESCAPED BY ‘\\’
所以,如果你的数据里面有反斜杠(backslash)”\”的时候,数据会出现被截断的问题。出现这种问题,只要写上如下的fields子句即可
FIELDS TERMINATED BY ‘\t’ ENCLOSED BY ” ESCAPED BY ”
如何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。
相关文档:
采用的是MySql官方提供的.NET connector,此驱动只需要下载即可使用:http://dev.mysql.com/downloads/connector/net/1.0.html
在使用中积累了几点经验:
1)使用Parameter参数形式提交Command时必须要把"@"号换成"?"号,这一点让我困惑了一天,只是不明白MySQL为何要搞特殊呢,象MS、ODP.NE ......
数据库目录是MySQL数据库服务器存放数据文件的地方,不仅包括有关表的文件,还包括数据文件和MySQL的服务器选项文件。不同的分发,数据库目录的缺省位置是不同的。
数据目录的位置
缺省的数据库位置
缺省数据库的位置编译在服务器中。
◆如果您是在一个源程序分发包中安装 MySQL,典型的缺省位置可能是 /usr/local/var ......
mysql 起动错误解决办法- -
Access denied for user ''@'localhost' to d ......
在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个
mytable
表:
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL
);
我们随机向里面插入了
10000
条记录,其中有一条:
5555, admin
。
在查找
username="admin"
的记录
SELECT * from mytable WH ......
首先需要卸载redhat自带的mysql数据库(不然安装时会出问题)
rpm -qa|grep mysql
然后 rpm -e 包名称
如果涉及到依赖,就先删除依赖,或者加个 -nodeps 参数忽略依赖
有网友说用yum -y remove mysql也可以
另一个解决方法时在linux自带mysql基础上再装新的mysql
二进制安装包版本很多,常用的就两个,我下的是 ......