标签归档:乱码

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不同编码的数据
原来用的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。

wordpress dynamic landing page(dlp)插件支持baidu及乱码的解决

Landing sites 1.3 是一个wordpress的wordpress dynamic landing(动态登录页)的插件,功能就是如果是从支持的搜索引擎到网站上来,可以在页面上部显示用户从哪里过来的,搜索的关键字是什么,并且,根据关键字搜索本站,显示相关的内容。
安装很简单。下载后放到plugin目录,激活,在想要显示的页面放入正确的代码就可以了。
具体可以参考:http://theundersigned.net/2006/06/landing-sites-11

本站从baidu过来的也有很多用户,这个插件不支持百度,所以需要增加支持百度的功能。
首先打开landingsites13.php
为$search_engines添加一个值,

'baidu.com' => 'wd',

保存重新上传就可以了,测试一下,起作用了。但是显示搜索的代码是乱码
比如搜索

http://www.baidu.com/s?wd=%B1%B4%B1%B4+wordpress&cl=3

到了本网站,显示
您从www.baidu.com来,要找?? wordpress.下面这些内容可能您也感兴趣:

但是从goolge过来就是对的,没有乱码。
经过查看,baidu的keywords,经过编码是:

%B1%B4%B1%B4+wordpress

而google的keywords是

%E8%B4%9D%E8%B4%9D+wordpress

原来这个东西不支持GBK编码,因为google用的是utf-8,所以没有问题。

解决的方法是,判断一下$terms是不是utf-8的,如果不是做一次转换,解决方法

function ls_get_terms($d)
最后的
return $terms;
前面加入

//convert gbk->utf8 if terms is gbk
$encoding_list="EUC-CN, UTF-8";
if (mb_detect_encoding($terms,$encoding_list)!="UTF-8"){
	$terms=iconv(mb_detect_encoding($terms,$encoding_list), "UTF-8", $terms);
}

if (!seems_utf8($terms)){
	$terms=iconv("GBK", "UTF-8", $terms);
}

测试通过,有问题请拍砖。
增加了几个国内搜索网站的支持
‘baidu.com’ => ‘wd’,
‘soso.com’ => ‘w’,
‘sogou.com’ => ‘query’,
‘cha.so.163.com’ => ‘q’,
‘page.so.163.com’ => ‘q’,
‘site.so.163.com’ => ‘q’,
‘news.so.163.com’ => ‘q’,
‘pic.so.163.com’ => ‘q’,
‘search.live.com’ => ‘q’,

添加到$search_engines里即可
—————————
2007-04-23更新

discuz mysql 数据库编码转换utf8->utf8

帮朋友的论坛做了一次编码转换的工作。系统是windows 2003,mysql4.1 discuz 5
本来以为很简单,dump数据
mysqldump -u root -p –opt –default-character-set=utf8 \
–skip-set-charset olddb cdb_members > d:\bak\cdb_members.sql
出来,用工具转一下编码,然后再导入
mysql -u root -p –default-character-set=utf8 newdb < d:\bak\cdb_members.sql

实际操作并没有想象的那么简单,最后解决的方案,也不是那么复杂。
继续阅读

pydev在eclipse里面的输出中文乱码的解决方案

#!/usr/bin/python
# -*- coding: utf-8 -*-
print "中文"

输出

涓枃

看了一下帮助,eclipse console default的encoding是GBK,需要设置console的encoding为utf-8方法
Console encoding
The console can be configured to display output using a character encoding different from the default encoding. To set the console encoding for an application, use the Console Encoding settings on the Common tab of a launch configuration.

wordpress程序修改&使用tips

  • wordpress发出的邮件标题乱码,修改
    wp-includes/pluggable.php
    里面的wp_mail function,
    $subject 做如下处理

    $subject = "=?".get_option('blog_charset')."?B?".base64_encode($subject)."?=";
    

    即可,测试成功。

  • Ultimate Tag Warrior 3 tag 的永久链接不能用
    方法就是什么都不动,来回保存几下就好了。或者就是改几下永久链接的值,然后再改回来。
  • 编辑文件的时候,特殊字符被转义
    比如”<"变成 "<",很是麻烦,解决的方法是,不用高级编辑器。。。烂