各种SQL在Hadoop Pig 中实现

发表时间:2013-02-21 09:08:27 文章分类:MySQL 阅读:7144
数据放在了两个文件,存放在/tmp/data_file_1和/tmp/data_file_2中.文件内容如下:tmp_file_1:
zhangsan    23  1  lisi    24  1  wangmazi    30  1  meinv   18  0  dama    55  0  
tmp_file_2:
1   a  23  bb  50  ccc  30  dddd  66  eeeee  
1.从文件导入数据 1)Mysql (Mysql需要先创建表).
         CREATE TABLE TMP_TABLE(USER VARCHAR(32),AGE INT,IS_MALE BOOLEAN);       CREATE TABLE TMP_TABLE_2(AGE INT,OPTIONS VARCHAR(50));   -- 用于Join  LOAD DATA LOCAL INFILE '/tmp/data_file_1'  INTO TABLE TMP_TABLE ;       LOAD DATA LOCAL INFILE '/tmp/data_file_2'  INTO TABLE TMP_TABLE_2;
2)Pig[mycode=S

MySQL 事件调度器(Event Scheduler)/Mysql任务调度(Event)

发表时间:2012-06-20 07:02:26 文章分类:MySQL 阅读:18880
创建 EVENT 语法如下:
CREATE[DEFINER = { user | CURRENT_USER }]EVENT[IF NOT EXISTS]event_nameON SCHEDULE schedule[ON COMPLETION [NOT] PRESERVE][ENABLE | DISABLE | DISABLE ON SLAVE][COMMENT ''comment'']DO sql_statement;schedule:AT TIMESTAMP [+ INTERVAL INTERVAL]| EVERY INTERVAL[STARTS TIMESTAMP [+ INTERVAL INTERVAL]][ENDS TIMESTAMP [+ INTERVAL INTERVAL]]INTERVAL:quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
例如创建一个每 30 秒清空 tableA 数据的任务[mycode=MySQL]CREATE EVENT E_DELETE_ASO_TOKEN ON SCHEDULE EVERY 3

mysql存储过程学习

发表时间:2012-06-11 03:57:41 文章分类:MySQL 阅读:1356
首先在mysql中练习下存储过程的小例子:
mysql> delimiter //mysql> CREATE PROCEDURE hello()    -> BEGIN    -> SELECT 'It is a HelloWorld';    -> END    -> //Query OK, 0 rows affected (0.01 sec)
其中“delimiter //”的意思是定义结束符号为“//”,以此来替换mysql中的“;”在mysql中查询上面的过程hello():
mysql> CALL hello()//+------------------------+| It is a HelloWorld |+------------------------+| It is a HelloWorld |+------------------------+1 row in set (0.00 sec)
建立测试用表:[mycode=MySQL]mysql> DROP TABLE IF EXISTS `company`.`people`; -> CREATE TABLE `company`.`people` (

mysql show status详解

发表时间:2012-06-07 05:29:01 文章分类:MySQL 阅读:3671
查看服务器目前状态信息的命令,两种方式:1.命令行,输入/usr/local/mysql/bin/mysqladmin extended-status -uroot -p2.连接到mysql,输入show status;3.如果要查看某个数据,可以
mysql> SHOW STATUS LIKE 'table%';+-----------------------+-------+| Variable_name        | Value |+-----------------------+-------+| Table_locks_immediate | 12   || Table_locks_waited    | 0    |+-----------------------+-------+
需要关注的部分有:qcache% ,open%tables,threads%,%key_read%,created_tmp%,sort%,com_select这几个变量的调优参考“mysql服务器调优”http://www.ibm.com/developerworks/

MySQL 数据库索引的设置和优化详解

发表时间:2012-06-07 05:13:42 文章分类:MySQL 阅读:4437
本文介绍了数据库索引,及其优、缺点。针对MySQL索引的特点、应用进行了详细的描述。分析了如何避免MySQL无法使用,如何使用EXPLAIN分析查询语句,如何优化MySQL索引的应用。索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。注:[1]索引不是万能的!索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。[2]另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。1. InnoDB数据表的索引与MyISAM数据表相比,索引对InnoDB数据的重要性要大得多。在InnoDB数据表上,索引对InnoDB数据表的重要性要在得多。在 InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。”数据行级锁定”的意思是指在事务操作的执行过程中锁

show status 优化MySQL数据库

发表时间:2012-06-07 05:08:24 文章分类:MySQL 阅读:1421
1, 查看MySQL服务器配置信息
    mysql> SHOW variables;  
2, 查看MySQL服务器运行的各种状态值
    mysql> SHOW global STATUS;  
3, 慢查询[mycode=MySQL] mysql> show variables like '%slow%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | log_slow_queries | OFF | | slow_launch_time | 2 | +------------------+-------+ mysql> show global status like '%slow%'; +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | Slow_launch_threads | 0 | | Slo

mysql text 长度

发表时间:2012-04-12 09:27:27 文章分类:MySQL 阅读:1723
BLOBTEXT一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。MEDIUMBLOBMEDIUMTEXT一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。LONGBLOBLONGTEXT一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。

远程用户连接mysql授权

发表时间:2011-09-07 10:14:45 文章分类:MySQL 阅读:207919
授权法:  在安装mysql的机器上运行:1、    
 [root@localhost sam]# /usr/local/mysql/bin/mysql -h127.0.0.1 -uroot -p  //这样应该可以进入MySQL服务器
2、
  mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION#赋予任何主机访问数据的权限#例如,让myuser使用mypassword从任何主机连接到mysql服务器的话。mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;#如果允许让用户myuser从ip为222.222.122.228的主机连接到mysql服务器,并使用mypassword作为密码mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'222.222.122.228' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES;  #修改生效mysql>EXIT  #退出MySQL服务器,这样就可以在其它任何的主机上以root身份登录

mysql-5.5.15 安装

发表时间:2011-08-15 06:23:51 文章分类:MySQL 阅读:3567
mysql 最新的版本都需要cmake编译安装,估计以后的版本也会采用这种方式,所以特地记录一下安装步骤及过程,以供参考。注意:此安装是默认centos下已经安装了最新工具包,比如GNU make,GCC,Perl, libncurses5-dev,如果在编译安装过程中发现有缺失的工具包,先yum install 单独下载安装再继续即可。以下安装中涉及的几点需要提前说明的问题:1. 所有下载的文件将保存在 /data/software/ 目录下2. mysql 将以mysql用户运行,而且将加入 service 开机自动运行3. mysql 将被安装在 /usr/local/mysql/ 目录下4. mysql 默认安装使用 utf8 字符集5. mysql 的数据和日志文件保存在 /data/mysql/ 对应目录下6. mysql 的配置文件保存于/data/mysql/my.cnf一. Centos 用 wget 下载需要的软件,保存到目录 /data/software/ 下wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.15.tar.gz/from/http://mysql.he.net/wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gzwget http://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz二. 安装 cmake[color=#4169E1]cd /usr/local/src

MySQL”海量数据”查询性能分析

发表时间:2011-05-27 02:16:50 文章分类:MySQL 阅读:4834
最近做了一次MySQL所谓的”海量数据”查询性能分析.表结构             dtdt2dt3itit2it3 idid idid id id int PK ext1       ext1varchar(256)  time time  time time  time   time int/datetime KEY      ext2 ext2     ext2  ext2   varchar(128)说明, MyISAM引擎, dt表示时间字段使用datetime类型, it表示时间字段使用int类型.初始数据首先生成100K个UNIX时间戳(i

解决读写锁优先级的问题

发表时间:2011-05-27 02:01:12 文章分类:MySQL 阅读:24010
这个问题就是:对于一个共享的数据结构,读的频率远远大于写,所以用了读写锁.但是发现写线程总是抢不到锁.按The Open Group 的Single UNIX  Specification所说,"Thepthread_rwlock_rdlock() function applies a read lock to the read-write lock referenced by rwlock. The calling thread acquires the read lock if a writer does not hold the lock and there are no writers blocked on the lock. It is unspecified whether the calling thread acquires the lock when a writer does not hold the lock and there are writers waiting for the lock" 意思就是说,没有writer在等写锁的时候,reader是可以拿到读锁的。但是没有规定,如果有writer在等待写锁,该如何?还好,Linux有pthread_rwlockattr_setkind_np这个函数,可惜我用man查不到这个函数。我是在pthread.h头文件中发现的。[mycode=Ruby]enum{  PTHREAD_RWLOCK_PREFER_READER_NP,  PTHREAD_RWLOCK_PREFER_WRITER_NP,  PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,  PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP}; /* S

数据库字段复用的基本原理与示例

发表时间:2011-05-02 03:06:55 文章分类:MySQL 阅读:2425
一、逻辑代数基础: 1,数字用二进制表示,所有可能出现的数只有0和1两个。2,基本运算只有“与”、“或”、“非”三种。 与运算定义为:(用 & 表示与运算) 0 & 0 = 0 0 & 1 = 01 & 0 = 01 & 1 = 1 可以简单理解为:只要有一个0,结果就是0,和乘法类似。 或运算定义为:(用 | 表示与运算) 0 | 0 = 0 0 | 1 = 11 | 0 = 11 | 1 = 1 可以简单理解为:只要有一个1,结果就是1,和加法类似。 二、逻辑运算示例: 01111010101010101111111111111111 & 1100000 = 1100000 一般可以理解为: 如果要获取一个数字某N位的数值,只需要将这个数字与2的N-1次方(掩码)进行与运算即可。 三、数据库字段定义: 以数据表 binary_sample为例: create table binary_sample(uid int unsigned not null,status int unsigned not null default 0,primary key(uid),key i_s(status))engine=innodb; status字段定义: status字段数据类型为32bit的整数,为了尽可能的存储多个属性,我们将其进行如下定义:以下所有“位”的描述顺序按照从低到高(从右到左)顺序表示。 0-2位表示用户注册状态:

mysql获取日期的week,day,month,quarter等的实现备忘

发表时间:2011-04-21 07:02:21 文章分类:MySQL 阅读:7254
[mycode=MySQL]#表名字"bestlovesky_article"#日期字段(`update_time`)的所在week的第一天:select date_sub(`update_time`,INTERVAL WEEKDAY(`update_time`) + 1 DAY) from bestlovesky_article#日期字段(`update_time`)的所在month的第一天:SELECT concat(date_format(LAST_DAY(`update_time`),'%Y-%m-'),'01') from bestlovesky_article#日期字段(`update_time`)的所在quarter的第一天:select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM `update_time`),1) + interval QUARTER(`update_time`)*3-3 month),'%Y-%m-'),'01') from bestlovesky_article#当前week的第一天:select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY)#当前week的最后一天:select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 5 DAY)#前一week的第一天:select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 8 DAY)#前一week的最后一天:select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 2

mysql导出excel,命令行执行查询导出,shell导出

发表时间:2010-08-27 10:45:42 文章分类:MySQL 阅读:55337
大的思路:php用mysql的命令和shell结合方法一:
SELECT * INTO OUTFILE ‘./bestlovesky.xls‘ FROM bestlovesky WHERE 1 ORDER BY id DESC  LIMIT 0, 50;
方法二:
echo "SELECT id,name FROM bestlovesky WHERE 1 ORDER BY id DESC LIMIT 0, 50;"| /usr/local/mysql/BIN/mysql -h127.0.0.1-uroot -p123456 > /DATA/bestlovesky.xls
因office默认的是gb2312编码,服务器端生成的很有可能是utf-8编码,可能导致导出中文乱码,解决办法如下:方法1.在服务器端使用iconv来进行编码转换
iconv -futf8 -tgb2312 -obestlovesky2.xls bestlovesky.xls
方法2.把bestlovesky.xls以文本方式打开,然后另存为,在编码选择ANSI编码,保存如果方法1转换不顺利,则会提示:iconv: illegal input sequence at position 1841 类似于这样的错误,先把bestlovesky.xls下载下来,这个时候文件是utf-8编码的,用excel打开,乱码。把bestlovesky.xls以文本方式打开,然后另存为,在编码选择ANSI编码,保存

MySQL 字符串函数:字符串截取

发表时间:2010-08-21 07:35:50 文章分类:MySQL 阅读:52137
MySQL 字符串函数:字符串截取MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。1. 字符串截取:left(str, length)
mysql> SELECT LEFT('bestlovesky.com', 3);+-------------------------+| left('bestlovesky.com', 3) |+-------------------------+| sql                     |+-------------------------+
2. 字符串截取:right(str, length)[mycode=MySQL]mysql> select right('bestlovesky.com', 3);+--------------------------+| right('bestlovesky.com', 3) |+--------------------------+| com               
123下一页