MySQL中你可以使用SELECT…INTO OUTFILE语句来简单的导出数据到文本文件上。


使用 SELECT … INTO OUTFILE 语句导出数据

以下实例中我们将数据表 tutorials_tbl 数据导出到 /tmp/tutorials.txt 文件中:

mysql> SELECT * FROM tutorials_tbl 
    -> INTO OUTFILE '/tmp/tutorials.txt';

你可以通过命令选项来设置数据输出的指定格式,以下实例为导出 CSV 格式:

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n';

在下面的例子中,生成一个文件,各值用逗号隔开。这种格式可以被许多程序使用。

继续阅读

使用Mysql也很长一段时间了,在使用的过程中遇到过各种各样的问题,有些看上去很小的问题,在解决的过程中却花了很长时间,解决后才发现,原来 这样简 单。所以总结了一些经验和技巧,把它写出来,希望对读者能有所帮助,少走弯路。

1. binary BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写。举例:

继续阅读

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。

继续阅读

本文内容来源于Redis 作者博文,Redis作者说,他看到的所有针对Redis的讨论中,对Redis持久化 的误解是最大的,于是他写了一篇长文来对Redis的持久化进行了系统性的论述。

什么是持久化,简单来讲就是将数据放到断电后数据不会丢失的设备中。也就是我们通常理解的硬盘上。

写操作的流程

首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过程。

  1. 客户端向服务端发送写操作(数据在客户端的内存中)
  2. 数据库服务端接收到写请求的数据(数据在服务端的内存中)
  3. 服务端调用write(2) 这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区中)
  4. 操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中)
  5. 磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上)

写操作大致有上面5个流程,下面我们结合上面的5个流程看一下各种级别的故障。

  • 当数据库系统故障时,这时候系统内核还是OK的,那么此时只要我们执行完了第3步,那么数据就是安全的,因为后续操作系统会来完成后面几步,保证数据最终会落到磁盘上。
  • 当系统断电,这时候上面5项中提到的所有缓存都会失效,并且数据库和操作系统都会停止工作。所以只有当数据在完成第5步后,机器断电才能保证数据不丢失,在上述四步中的数据都会丢失。

通过上面5步的了解,可能我们会希望搞清下面一些问题:

  • 数据库多长时间调用一次write(2),将数据写到内核缓冲区
  • 内核多长时间会将系统缓冲区中的数据写到磁盘控制器
  • 磁盘控制器又在什么时候把缓存中的数据写到物理介质上

对于第一个问题,通常数据库层面会进行全面控制。而对第二个问题,操作系统有其默认的策略,但是我们也可以通过POSIX API提供的fsync系列命令强制操作系统将数据从内核区写到磁盘控制器上。对于第三个问题,好像数据库已经无法触及,但实际上,大多数情况下磁盘缓存是被设置关闭的。或者是只开启为读缓存,也就是写操作不会进行缓存,直接写到磁盘。建议的做法是仅仅当你的磁盘设备有备用电池时才开启写缓存。

继续阅读

将 production 数据库中的 mytbl 表快速复制为 mytbl_new,2个命令如下:

CREATE TABLE mytbl_new LIKE production.mytbl;
INSERT mytbl_new SELECT * FROM production.mytbl;

第一个命令是创建新的数据表 mytbl_new ,并复制 mytbl 的数据表结构。

第二个命令是讲数据表 mytbl 中的数据复制到新表 mytbl_new 。

注:production.mytbl是指定要复制表的数据库名称为 production 。它是可选的。假如没有production. ,MySQL数据库将会假设mytbl在当前操作的数据库。

继续阅读

索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。
假设我们创建了一个名为people的表:

CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL );

然后,我们完全随机把1000个不同name值插入到people表。下图显示了people表所在数据文件的一小部分:

继续阅读

导读:需要搭建好Mangodb的环境,没有搭建好的请看下:初识Mongodb总结

边看边操作,这样才能记得牢,实践是检验真理的唯一标准.

光看不练假把式,光练不看傻把式,边看边练真把式.

知识改变命运,为了我们的未来,为了我们的梦想,一起动起来吧!


转载请著原信息:

作者:吴佰清

地址:http://www.cnblogs.com/wubaiqing/archive/2011/09/17/2179870.html

开发环境


操作系统  : Mac Os X
集成环境  : Mamp
编程语言  : PHP
Server    : Mongodb
Extension   : Mongo-1.2.4
管理工具  : Rock-PHP

行动

在了实践之前,希望大家看一下上面的学习资源,了解一下基本操作.

数据连接初始账号密码

账号:admin

密码:admin

首先我们建立一个文件:mongodb.php,设置需要连接账号密码,连接数据库

<?php
/**
 * Mongodb Test
 * 
 * Tools:
 * Zend Studio 8.x
 * Eclipse Plug :Toggle Varpper
 * 
 * @author Wu Bai Qing<wbqyyicx@gmail.com>
 * @version $Id: Mongodb.php 17 2011-09-17 06:04:15Z wbq $ 
 */

$mongo_server_name='admin';
$mongo_server_pwd='admin';

// 连接Mongo数据库 数据库地址:端口/账号:密码;
$mongo=new Mongo('mongodb://localhost:27017/admin:admin');

// 选择一个数据库和要操作的集(如果没有数据库默认创建)
$collection=$mongo->selectDB('rrs_result')->selectCollection('content');
?>