燕之庐网站建设 - 优质网站设计公司

Archive for the ‘MYSQL’ Category

MYSQL

2010/06/20

mysql编码转换修改设置

Tags:

一、 mysql> SHOW VARIABLES LIKE ’character_set_%’;
一、mysql> SHOW VARIABLES LIKE ‘character_set_%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
7 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE ‘collation_%’;
+———————-+——————-+
| Variable_name | Value |
+———————-+——————-+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+———————-+——————-+
3 rows in set (0.00 sec)
默认就是瑞典latin1,一下是换成我们自己的编码,如utf8:
外部访问数据乱码的问题就出在这个connection连接层上,解决方法是在发送查询前执行一下下面这句:

1. SET NAMES ‘utf8′;

它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

一般只有在访问之前执行这个代码就解决问题了,下面是创建数据库和数据表的,设置为我们自己的编码格式。
2. 创建数据库
mysql> create database name character set utf8;

3. 创建表
CREATE TABLE `type` (
`id` int(10) unsigned NOT NULL auto_increment,
`flag_deleted` enum(’Y',’N') character set utf8 NOT NULL default ‘N’,
`flag_type` int(5) NOT NULL default ‘0′,
`type_name` varchar(50) character set utf8 NOT NULL default ”,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

4. 修改数据库成utf8的.
mysql> alter database name character set utf8;

5.
修改表默认用utf8.
mysql> alter table type character set utf8;

6. 修改字段用utf8
mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;

二、编码算是MySql最难弄的问题了,研究了一下,总结点结果,部分来自其他人的经验, 如有不妥之处,请踊跃叽歪啊。。。

设置步骤:

一、编辑MySql的配置文件
MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini,可以搜索,Linux下一般是 /etc/my.cnf

–在 [mysqld] 标签下加上三行
default-character-set = utf8
character_set_server = utf8
lower_case_table_names = 1 //表名不 区分大小写(此与编码无关)

–在 [mysql] 标签下加上一行
default-character-set = utf8

–在 [mysql.server]标签下加上一行
default-character-set = utf8

–在 [mysqld_safe]标签下加上一行
default-character-set = utf8

–在 [client]标签下加上一行
default-character-set = utf8

二、重新启动MySql服务
Windows可在服务管理器中操作,也可使用命令行:
net stop mysql 回车
net start mysql 回车
服务名可能不一定为mysql,请按自己的设置

Linux下面可是用 service mysql restart

如果出现启动失败,请检查配置文件有没有设置错误

三、查看设置结果
登录MySql命令行客户端:打开命令行
mysql –uroot –p 回车
输入密码
进入mysql后 执行 :show variables like “%char%”;
显示结果应该类似如下:

| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |

如果仍有编码不是utf8的,请检查配置文件,也可使用mysql命令设置:
set character_set_client = utf8;
set character_set_server = utf8;
set character_set_connection = utf8;
set character_set_database = utf8;
set character_set_results = utf8;
set collation_connection = utf8_general_ci;
set collation_database = utf8_general_ci;
set collation_server = utf8_general_ci;
以上命令有部分只对当前登录有效,所以不是很管用。
四、建库导入数据
导入sql脚本文件前,先确保该脚本文件及内容格式为UTF-8编码格式,
同以上方法登入mysql命令行,use 库名 进入相应数据库
set names utf8;
source sql脚本文件名;

五、程序连接字符串(此项与mysql设置无关,为程序开发使用)
对于较老的jdbc版本的驱动,连接字符创可使用一下相似格式:
jdbc:mysql://127.0.1:3306/test?useUnicode=true&characterEncoding=utf-8

六、附录
如果无法更改数据库配置文件,可以采取一下方法(不保证全部有效):
1、建数据库时设置数据库编码为utf-8
例如 create database `test` default character set utf8;

2、导入数据库sql的时候,请确保sql文件为utf-8编码
进入mysql命令行后输入 set names utf8;
再进入数据库 use test;
在导入sql脚本 source test.sql;

3、连接字符串类似如下:(开发相关,非数据库设置)
jdbc:mysql://127.0.1:3306/test?useUnicode=true&characterEncoding=utf-8

北京网站建设公司

MYSQL

2010/04/17

MySQL数据库锁机制的相关原理简介

Tags:

不同于行级或页级锁定的选项:

· 版本(例如,为并行的插入在MySQL中使用的技术),其中可以一个写操作,同时有许多读取操作。这明数据库或表支持数据依赖的不同视图,取决于访问何时 开始。其它共同的术语是“时间跟踪”、“写复制”或者“按需复制”。

· 按需复制在许多情况下优先于页级或行级锁定。然而,在最坏的情况下,它可能比使用常规锁定使用多的内存。

· 除了行级锁定外,你可以使用应用程序级锁定,例如在MySQL中使用GET_LOCK()和RELEASE_LOCK()。这些是建议性锁定,它们只能在 运行良好的应用程序中工作。

为达到最高锁定速度,除InnoDB 和BDB 之外,对所有存储引擎,MySQL使用表锁定(而不是页、行或者列锁定)。对于InnoDB 和BDB 表,如果你用LOCK TABLES显式锁定表,MySQL只使用表锁定;如果你不使用LOCK TABLES,因为 InnoDB 使用自动行级锁定而BDB 使用页级锁定来保证事务隔离。

但是对于大表,对于大多数应用程序,表锁定比行锁定更好,但存在部分缺陷。表锁定使许多线程同时从一个表中进行读取操作,但如果一个线程想要对 表进行写操作,它必须首先获得独占访问。更新期间,所有其它想要访问该表的线程必须等待直到更新完成。

表更新通常情况认为比表检索更重要,因此给予它们更高的优先级。这应确保更新一个表的活动不能“饿死”,即使该表上有很繁重的SELECT 活动。

表锁定在这种情况下会造成问题,例如当线程正等待,因为硬盘已满并且在线程可以处理之前必须有空闲空间。在这种情况下,所有想要访问出现问题的 表的线程也被设置成等待状态,直到有更多的硬盘空间可用。

表锁定在下面的情况下也存在问题:

· 一个客户发出长时间运行的查询。

· 然后,另一个客户对同一个表进行更新。该客户必须等待直到SELECT完成。

· 另一个客户对同一个表上发出了另一个 SELECT 语句。因为UPDATE比 SELECT 优先级高,该SELECT 语句等待UPDATE完成,并且等待第1个 SELECT 完成。

下面描述了一些方法来避免或减少表锁定造成的竞争:

· 试图使 SELECT 语句运行得更快。可能必须创建一些摘要(summary)表做到这点。

· 用–low-priority-updates启动mysqld。这将给所有更新(修改)一个表的语句以比SELECT语句低的优先级。在这种情况下, 在先前情形的第2个SELECT语句将在UPDATE语句前执行,而不需要等候第1个 SELECT 完成。

· 可以使用SET LOW_PRIORITY_UPDATES=1语句指定具体连接中的所有更新应使用低优先级。

· 可以用LOW_PRIORITY属性给与一个特定的INSERT、UPDATE或DELETE语句较低优先级。

· 可以用HIGH_PRIORITY属性给与一个特定的SELECT语句较高优先级。

· 为max_write_lock_count系统变量指定一个低值来启动mysqld来强制MySQL在具体数量的插入完成后临时提高所有等待一个表的 SELECT 语句的优先级。这样允许在一定数量的WRITE锁定后给出READ锁定。

· 如果你有关于INSERT结合SELECT的问题,切换到使用新的MyISAM表,因为它们支持并发的SELECT和INSERT。

· 如果你对同一个表混合插入和删除,INSERT DELAYED将会有很大的帮助。

· 如果你对同一个表混合使用 SELECT 和DELETE 语句出现问题,DELETE 的LIMIT 选项可以有所帮助。

· 对 SELECT 语句使用SQL_BUFFER_RESULT可以帮助使表锁定时间变短。

· 可以更改mysys/thr_lock.c中的锁代码以使用单一的队列。在这种情况下,写锁定和读锁定将具有相同的优先级,对一些应用程序会有帮助。

这里是一些MySQL中表锁定相关的技巧:

· 如果不混合更新与需要在同一个表中检查许多行的选择,可以进行并行操作。

· 可以使用 LOCK TABLES 来提高速度,因为在一个锁定中进行许多更新比没有锁定的更新要快得多。将表中的内容切分为几个表也可以有所帮助。

· 如果在MySQL中表锁定时遇到速度问题,可以将表转换为 InnoDB 或BDB 表来提高性能

北京网站建设

MYSQL

2010/04/03

Mysql触发器实现表数据同步

Tags:

1、
DELIMITER |
CREATE TRIGGER table1_insert
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
declare v_t1 date;
if new.s1 is not null and new.d1 >= ‘2010-01-01′ then
if new.d1 < date(new.c1) then
select t1 into v_t1 from table2 where s1 = new.s1;
if new.d1 < v_t1 and new.c1 > concat(v_t1, ‘ 15:00:00′) then
set new.isvalid = 0;
end if;
end if;
end if;
END;

2、
DELIMITER |
CREATE TRIGGER table1_update
BEFORE UPDATE
ON table1
FOR EACH ROW
BEGIN
declare v_t1 date;
if new.s1 is not null and new.d1 != old.d1 and new.d1 >= ‘2010-01-01′ then
if old.isvalid != 1 then
if new.d1 >= date(new.c1) then
set new.isvalid = 1;
end if;
else
if new.d1 < date(new.c1) then
select t1 into v_t1 from table2 where s1 = new.s1;
if new.d1 < v_t1 and new.c1 > concat(v_t1, ‘ 15:00:00′) then
set new.isvalid = 0;
end if;
end if;
end if;
end if;
END;

3、
DROP TRIGGER `test`.`test_insert`//
CREATE TRIGGER `test`.`test_insert` BEFORE INSERT ON `test`.`test`
FOR EACH ROW BEGIN
declare v_t1 date;
if new.s1 is not null and new.d1 >= ‘2010-01-01′ then
if new.d1 < date(new.c1) then
select t1 into v_t1 from test2 where s1 = new.s1;
if new.d1 < v_t1 and new.c1 > concat(v_t1, ‘ 15:00:00′) then
set new.isvalid = 0;
end if;
end if;
end if;
END
//

创建两个表

create database if not exists ENOTICE;

CREATE TABLE ENOTICE.VIO_USERINFO(

ID INT AUTO_INCREMENT NOT NULL comment ‘自动编号’,

DLM VARCHAR(20) NOT NULL UNIQUE comment ‘登录名’ ,

DLMM VARCHAR(20) NOT NULL comment ‘密码’,

PRIMARY KEY (ID)

)ENGINE=INNODB DEFAULT CHARSET=GBK;

create database if not exists supersms;

create table supersms.sms_user(

id int not null auto_increment comment ‘自动编号’,

login_name varchar(200) not null UNIQUE comment ‘登录名’,

password varchar(200) comment ‘密码’,

primary key(`id`)

)ENGINE=InnoDB DEFAULT CHARSET=gbk;

创建触发器

/*同步插入触发器*/

DROP TRIGGER IF EXISTS ENOTICE.tg_sync_insert;

DELIMITER |

CREATE TRIGGER ENOTICE.tg_sync_insert

AFTER INSERT

ON ENOTICE.VIO_USERINFO

FOR EACH ROW

BEGIN

INSERT INTO supersms.sms_user(login_name,password) values (NEW.DLM,NEW.DLMM) ;

END;

|

DELIMITER ;

/*同步删除触发器*/

DROP TRIGGER IF EXISTS ENOTICE.tg_sync_delete;

DELIMITER |

CREATE TRIGGER ENOTICE.tg_sync_delete

AFTER DELETE

ON ENOTICE.VIO_USERINFO

FOR EACH ROW

BEGIN

DELETE FROM supersms.sms_user WHERE login_name=OLD.DLM;

END;

|

DELIMITER ;

/*同步更新触发器*/

DROP TRIGGER IF EXISTS ENOTICE.tg_sync_update;

DELIMITER |

CREATE TRIGGER ENOTICE.tg_sync_update

AFTER UPDATE

ON ENOTICE.VIO_USERINFO

FOR EACH ROW

BEGIN

UPDATE supersms.sms_user SET login_name=NEW.DLM,password=NEW.DLMM WHERE login_name=OLD.DLM;

END;

|

DELIMITER ;

插入测试

mysql> select * from supersms.sms_user;

Empty set (0.00 sec)

mysql> select * from vio_userinfo;

Empty set (0.00 sec)

mysql> insert into vio_userinfo(DLM,DLMM,SITEID,YHLX) values

-> (’a',’a',2,’1′),

-> (’b',’b',3,’1′);

Query OK, 2 rows affected (0.02 sec)

Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from supersms.sms_user;

+—-+————+———-+

| id | login_name | password |

+—-+————+———-+

|  9 | a          | a        |

| 10 | b          | b        |

+—-+————+———-+

2 rows in set (0.00 sec)

mysql> select * from vio_userinfo;

+—-+—–+——+

| ID | DLM | DLMM |

+—-+—–+——+

| 14 | a   | a    |

| 15 | b   | b    |

+—-+—–+——+

2 rows in set (0.00 sec)

更新测试

mysql> update vio_userinfo set dlm=’c’ where dlm=’a';

Query OK, 1 row affected (0.03 sec)

Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from supersms.sms_user;

+—-+————+———-+

| id | login_name | password |

+—-+————+———-+

|  9 | c          | a        |

| 10 | b          | b        |

+—-+————+———-+

2 rows in set (0.00 sec)

mysql> select * from vio_userinfo;

+—-+—–+——+

| ID | DLM | DLMM |

+—-+—–+——+

| 14 | c   | a    |

| 15 | b   | b    |

+—-+—–+——+

2 rows in set (0.00 sec)

删除测试

mysql> delete from vio_userinfo where id=15;

Query OK, 1 row affected (0.02 sec)

mysql> select * from supersms.sms_user;

+—-+————+———-+

| id | login_name | password |

+—-+————+———-+

|  9 | c          | a        |

+—-+————+———-+

1 row in set (0.00 sec)

mysql> select * from vio_userinfo;

+—-+—–+——+

| ID | DLM | DLMM |

+—-+—–+——+

| 14 | c   | a    |

+—-+—–+——+

1 row in set (0.00 sec)

MYSQL

2010/03/05

mysql命令行常用命令

Tags:

mysql命令行常用命令

第一招、mysql服务的启动和停止

  • net stop mysql
  • net start mysql

第二招、登陆mysql

  • mysql -u用户名 -p用户密码
  • mysql -uroot -p, 回车後提示你输入密码,输入12345,然後回车即可进入到mysql中了,mysql的提示符是:

mysql> 注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP 第三招、增加新用户

  • grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”
  • 增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然後键入以下命令:grant select,insert,update,delete on *.* to user1@localhost Identified by “password1″;如果希望该用户能够在任何机器上登陆mysql,则将localhost改为”%”。
  • 如果你不想user1有密码,可以再打一个命令将密码去掉。grant select,insert,update,delete on mydb.* to user1@localhost identified by “”;

第四招: 操作数据库 登录到mysql中,然後在mysql的提示符下运行下列命令,每个命令以分号结束。

  • 显示数据库列表。

show databases; 缺省有两个数据库:mysql和test。 mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。

  • 显示库中的数据表:

use mysql; show tables;

  • 显示数据表的结构:

describe 表名;

  • 建库与删库:

create database 库名; drop database 库名;

  • 建表:

use 库名; create table 表名(字段列表); drop table 表名;

  • 清空表中记录:

delete from 表名;

  • 显示表中的记录:

select * from 表名;

第五招、导出和导入数据

  • 导出数据:

mysqldump –opt test > mysql.test 即将数据库test数据库导出到mysql.test文件,後者是一个文本文件 如:mysqldump -u root -p123456 –databases dbname > mysql.dbname 就是把数据库dbname导出到文件mysql.dbname中。

  • 导入数据:

mysqlimport -u root -p123456 < mysql.dbname。 不用解释了吧。

  • 将文本数据导入数据库:

文本数据的字段数据之间用tab键隔开。 use test; load data local infile “文件名” into table 表名;

SQL常用命令使用方法:

(1) 数据记录筛选:

sql=”select * from 数据表 where 字段名=字段值 order by 字段名 [desc]”

sql=”select * from 数据表 where 字段名 like ‘%字段值%’ order by 字段名 [desc]”

sql=”select top 10 * from 数据表 where 字段名 order by 字段名 [desc]”

sql=”select * from 数据表 where 字段名 in (’值1′,’值2′,’值3′)”

sql=”select * from 数据表 where 字段名 between 值1 and 值2″

(2) 更新数据记录:

sql=”update 数据表 set 字段名=字段值 where 条件表达式”

sql=”update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式”

(3) 删除数据记录:

sql=”delete from 数据表 where 条件表达式”

sql=”delete from 数据表” (将数据表所有记录删除)

(4) 添加数据记录:

sql=”insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)”

sql=”insert into 目标数据表 select * from 源数据表” (把源数据表的记录添加到目标数据表)

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值 COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名) 取得一个表格栏最大的值 MIN(字段名) 取得一个表格栏最小的值 SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql=”select sum(字段名) as 别名 from 数据表 where 条件表达式” set rs=conn.excute(sql)

用 rs(”别名”) 获取统的计值,其它函数运用同上。

(6) 数据表的建立和删除:

CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 数据表名称 (永久性删除一个数据表)

[编辑]

MySQL批 处理命令

批处理是一种非交互式运行mysql程序的方法,如同您在mysql中使用的命令一样,你仍然将使用这些命令。

为了实现批处理,您重定向一个文件到mysql程序中,首先我们需要一个文本文件,这个文本文件包含有与我们在mysql中输入的命令相同 的文本。 比如我们要插入一些数据,使用包含下面文本的文件(文件名为New_Data.sql,当然我们也可以取名为New_Data.txt及任何其他的合法名 字,并不一定要以後缀sql结尾):

  • USE Meet_A_Geek;
  • INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, “Block”);
  • INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, “Newton”);
  • INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, “Simmons”);

注意上面的这些句子的语法都必须是正确的,并且每个句子以分号结束。 上面的USE命令选择数据库,INSERT命令插入数据。

下面我们要把上面的文件导入到数据库中,导入之前要确认数据库已经在运行,即是mysqld进程(或者说服务,Windows NT下面称为”服务“,unix下面为”进程“)已经在运行。 然後运行下面的命令:

  • bin/mysql –p < /home/mark/New_Data.sql

接着按提示输入密码,如果上面的文件中的语句没有错误,那么这些数据就被导入到了数据库中。

命令行中使用LOAD DATA INFILE 从文件中导入数据到数据库: 现在您可能会问自己,”究竟为什么我要输入所有的这些SQL语句到文件中,然後通过程序运行它们呢?” 这样看起来好像需要大量的工作。很好,你这样想很可能就对了。但是假如你有从所有这些命令中产生的log记录呢?现在这样就很棒,嗯,大多数数据库都会自 动产生数据库中的事件记录的log。而大部分log都包含有用过的原始的SQL命令。因此,如果您不能从您现在的数据库中导出数据到新的 mysql数据库中使用,那么您可以使用log和mysql的批处理特性,来快速且方便地导入您地数据。当然,这样就省去了打字的麻烦。

LOAD DATA INFILE 这是我们要介绍的最後一个导入数据到MySQL数据库中的方法。这个命令与mysqlimport非常相似,但这个方法可以在mysql命令行中使用。也 就是说您可以在所有使用API的程序中使用这个命令。使用这种方法,您就可以在应用程序中导入您想要导入的数据。

使用这个命令之前,mysqld进程(服务)必须已经在运行。 启动mysql命令行:

  • bin/mysql –p

按提示输入密码,成功进入mysql命令行之後,输入下面的命令:

  • USE Meet_A_Geek;
  • LOAD DATA INFILE “/home/mark/data.sql” INTO TABLE Orders;

简单的讲,这样将会把文件data.sql中的内容导入到表Orders中,如mysqlimport工具一样,这个命令也有一些可以选择的参数。 比如您需要把自己的电脑上的数据导入到远程的数据库服务器中,您可以使用下面的命令:

  • LOAD DATA LOCAL INFILE “C:\MyDocs\SQL.txt” INTO TABLE Orders;

上面的LOCAL参数表示文件是本地的文件,服务器是您所登陆的服务器。 这样就省去了使用ftp来上传文件到服务器,MySQL替你完成了. 您也可以设置插入语句的优先级,如果您要把它标记为低优先级(LOW_PRIORITY),那么MySQL将会等到没有其他人读这个表的时候,才把插入数 据。可以使用如下的命令:

  • LOAD DATA LOW_PRIORITY INFILE “/home/mark/data.sql” INTO TABLE Orders;

您也可以指定是否在插入数据的时候,取代或者忽略文件与数据表中重复的键值。替代重复的键值的语法:

  • LOAD DATA LOW_PRIORITY INFILE “/home/mark/data.sql” REPLACE INTO TABLE Orders;

上面的句子看起来有点笨拙,但却把关键字放在了让您的剖析器可以理解的地方。

下面的一对选项描述了文件的记录格式,这些选项也是在mysqlimport工具中可以用的。他们在这里看起来有点不同。首先,要用到 FIELDS关键字,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:

  • TERMINATED BY character
  • ENCLOSED BY character
  • ESCAPED BY character

这些关键字与它们的参数跟mysqlimport中的用法是一样的. The TERMINATED BY 描述字段的分隔符,默认情况下是tab字符(\t) ENCLOSED BY描述的是字段的括起字符。比方以引号括起每一个字段。 ESCAPED BY 描述的转义字符。默认的是反些杠(backslash:\ ). 下面仍然使用前面的mysqlimport命令的例子,用LOAD DATA INFILE语句把同样的文件导入到数据库中:

  • LOAD DATA INFILE “/home/mark/Orders.txt” REPLACE INTO TABLE Orders FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”‘;

LOAD DATA INFILE语句中有一个mysqlimport工具中没有特点:

     LOAD DATA INFILE 可以按指定的列把文件导入到数据库中。

当我们要把数据的一部分内容导入的时候,这个特点就很重要。比方说,我们要从Access数据库升级到MySQL数据库的时候,需要加入一些栏目 (列/字段/field)到MySQL数据库中,以适应一些额外的需要。 这个时候,我们的Access数据库中的数据仍然是可用的,但是因为这些数据的栏目(field)与MySQL中的不再匹配,因此而无法再使用 mysqlimport工具。尽管如此,我们仍然可以使用LOAD DATA INFILE,下面的例子显示了如何向指定的栏目(field)中导入数据:

  • LOAD DATA INFILE “/home/Order.txt” INTO TABLE Orders(Order_Number, Order_Date, Customer_ID);

如您所见,我们可以指定需要的栏目(fields)。这些指定的字段依然是以括号括起,由逗号分隔的,如果您遗漏了其中任何一个,MySQL将会提 醒您^_^
ubuntu 下的 mysql 命令行方式。把 blue.sql 下载下来,运行

 (sudo) mysql
 create database XXXX;
 use XXXX;
 source blue.sql

北京网站建设公司

MYSQL

2010/01/29

MySQL 5.5.1 M2 发布

Tags:

该版本主要改进:

1. 增加了半同步复制接口的支持
2. 支持SQL标准中的 SIGNAL 和 RESIGNAL 语句
3. 增强的XML功能
4. 新增两种用户定义分区的类型
5. 允许删除某个表在某个分区中的所有数据
6. 主键缓存支持存放在分区中的 MyISAM 表
7. 新增 TO_SECONDS 函数

下载地址: http://dev.mysql.com/downloads/

网站建设