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。
相关文档:
1、在linux下:
查看mysql 是否运行:ps -ef | grep myslq
如果 MySQL 正在运行,首先杀之: kill mysql的进程号。
启动 MySQL :/usr/bin/safe_mysqld --skip-grant-tables &
就可以不需要密码就进入 MySQL 了。
然后就是
>use mysql
......
[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数据库服务器存放数据文件的地方,不仅包括有关表的文件,还包括数据文件和MySQL的服务器选项文件。不同的分发,数据库目录的缺省位置是不同的。
数据目录的位置
缺省的数据库位置
缺省数据库的位置编译在服务器中。
◆如果您是在一个源程序分发包中安装 MySQL,典型的缺省位置可能是 /usr/local/var ......
Wordpress用了这么长时间,偶尔会想起来备份下数据,上次是用wp的xml,这次把自己机器的环境配的跟主机提供商基本一样了,正好那边有mysql数据库打包备份的服务,就尝试了一下。可不管我下载哪个时间点的备份包,里面都只有wp表的10个frm文件,copy到我的数据库目录后访问web,没有任何数据!直接搞不懂了。以前觉得用mysql ......