Chinaunix首页 | 论坛 | 博客
  • 博客访问: 348135
  • 博文数量: 66
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 2204
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-23 12:53
文章分类
文章存档

2010年(20)

2009年(30)

2008年(16)

我的朋友

分类: WINDOWS

2009-01-12 22:05:52

MySQL 如何导入导出数据
 
    使用mysqldump:(mysqldump命令位于默认安装C:\Program Files\MySQL\MySQL Server 5.1\bin目录中),mysqldump工具很多方面类似相反作用的工具mysqlimport,它们有一些同样的选项。但mysqldump能够做更多的事情,它可以把整个数据库装载到一个单独的文本文件中。这个文件包含有所有重建您的数据库所需要的SQL命令。这个命令取得所有的模式(Schema,后面有解释)并且将其转换成DDL语法(CREATE语句,即数据库定义语句),取得所有的数据,并且从这些数据中创建INSERT语句,这个工具将您的数据库中所有的设计倒转。因为所有的东西都被包含到了一个文本文件中,这个文本文件可以用一个简单的批处理和一个合适SQL语句导回到MySQL中,这个工具令人难以置信地简单而快速。
 
   因此,如果您想装载整个数据库test的内容到一个文件中,可以使用下面的命令:
   C:\Program Files\MySQL\MySQL Server 5.1\bin>mysqldump -uroot -p test > d:test_file.txt
 
   C:\Program Files\MySQL\MySQL Server 5.1\bin>mysqldump -uroot -p test > d:test_file.sql
 
   执行这二条语句是一样的效果,只是文件后缀名格式不一样,导出的数据信息是完全一样的。
 
   这个命令也允许您指定一个表进行dump(备份/导出/装载)。如果您只是希望把数据库test中的表friend的整个内容导出到一个文件,可以使用下面的命令:

   C:\Program Files\MySQL\MySQL Server 5.1\bin>mysqldump -uroot -p test friend > d:friend.sql
 
   如果你想把数据库test中的表,有选择性的选择表导出到一个文件,也可以使用下面的命令:
 
  C:\Program Files\MySQL\MySQL Server 5.1\bin>mysqldump -uroot -p test friend pet telephone owner vote >d:my2009.sql
 
 
   在试试这个命令的强大功能吧:
 
  导出所有表和所有数据,只需执行简单的下面那条命令就OK
 
  C:\Program Files\MySQL\MySQL Server 5.1\bin>mysqldump -u root -p --default-character-set=latin1 test > d:test_file.sql
 
 
CREATE TABLE `telephone` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tname` char(20) DEFAULT NULL,
  `handset` char(20) DEFAULT NULL,
  `housephone` char(20) DEFAULT NULL,
  `officephone` char(20) DEFAULT NULL,
  `faxes` char(20) DEFAULT NULL,
  `remark` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `handset` (`handset`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='通讯录';
 
****************************************************************************************
 
   MySQL 模糊查询全文索引,不同字段的SQL中文编码索引:
 
   许多朋友在使用mysql进行中文模糊查找时(如select * from telephone where tname like "%中文%"),就象我现在一样,查寻不到记录结果,显示0条记录。如何解决这个问题呢?按如下SQL语句执行试试吧:
 
  SELECT * FROM telephone WHERE tname REGEXP "芳";
 
  SELECT * FROM telephone WHERE handset REGEXP "159";
 
  SELECT * FROM telephone WHERE tname like binary  "%姚%";
 
 
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
数据类型        描述
 
INT           整数值。MySQL允许INT是有符号的或无符号的
REAL          浮点值。这种类型提供了比INT类型更大的范围和更高的精度,但是不如INT准确
CHAR          定长字符值。CHAR字段不能保存比指定长度值更长的字符串。短于指定长度的字段用空白填充。这种类型是在任何SQL实现中最常用的类型。
VARCHAR       变长字符值
TEXT          变长字符值
DATE          标准日期值。DATE类型存储过去、现在和未来任意的日期
TIME          标准时间值。这种类型存储与日期无关的一天时间。在与日期同时使用时,可以存储指定的日期和时间。MySQL另外提供了DATETIME类型,以在一个字段中存储日期和时间。

MySQL数据库常用命


1、MySQL常用命令

create database name; 创建数据库

use database name; 选择数据库

drop database name 直接删除数据库,不提醒

show tables; 显示表

desc tablename; 表的详细描述

select 中加上distinct去除重复字段

mysqladmin drop databasename 删除数据库前,有提示。

显示当前mysql版本和当前日期

select version(),current_date;

2、修改mysql中root的密码:

如果忘记了MySQL的root密码,大家可以用以下方法重新设置:

mysql> update mysql.user set password=password("sh2009") where user='root';

mysql> flush privileges //刷新数据库

重新启动MySQL,重启后就可以使用新密码登录了。


mysql>use dbname; 打开数据库:

mysql>show databases; 显示所有数据库

mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后

mysql>describe user; 显示表mysql数据库中user表的列信息);

3、grant

创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个

mysql> grant all privileges on *.* to user@localhost identified by ’something’ with

增加新用户

格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”

GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;

删除授权:

mysql> revoke all privileges on *.* from root@”%”;

mysql> delete from user where user=”root” and host=”%”;

mysql> flush privileges;

创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb

mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by ‘ passwd’

重命名表:

mysql > alter table t1 rename t2;


恢复数据库

shell> mysqladmin -h myhost -u root -p create dbname

shell> mysqldump -h host -u root -p dbname < dbname_backup.sql


如果只想卸出建表指令,则命令如下:

shell> mysqladmin -u root -p -d databasename > a.sql

如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:

shell> mysqladmin -u root -p -t databasename > a.sql

那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?

   mysqldump -T./ phptest driver

其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前 目录,即与mysqldump同一目录。如果不指定driver 表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。

5、可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查

询,可如下执行这些查询:

例如,如果您想将建表语句提前写在sql.txt中:

mysql > mysql -h myhost -u root -p database < sql.txt


自动备份MySQL数据库脚本:


@echo off
echo.
echo      MySQL数据库备份

echo *****************************
echo.
echo 今天是 %date%
echo 时间是 %time%
echo.
echo *****************************


set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"

md "D:\bat\%Ymd%"

"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump" --opt -Q -uroot -p2008 --default-character-set=latin1

test messagelist > "D:\bat\%Ymd%\messagelist.sql"

echo.

echo MySQL数据库备份完成,请进行检查。。。

echo.
echo.

pause




阅读(2249) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~