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。
相关文档:
[root@sql21 ~]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 5.1.26-rc-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+--------------------+
| Database &nb ......
......
一、下载MySQL
官方网站:www.mysql.org
二、安装
1.将此压缩包解压缩到制定文件夹下,以"C:/mysql"为例
2.将my-midium.ini复制一份,并重命名为my.ini
3.将C:/mysql/bin/libmysql.dll复制到系统目录下,例如复制到"C:/windows"下
4.在命令行模式下,运行C:/mysql/bin/mysqld,即可开启MySQL服务 ......
在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个
mytable
表:
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL
);
我们随机向里面插入了
10000
条记录,其中有一条:
5555, admin
。
在查找
username="admin"
的记录
SELECT * from mytable WH ......