当你建好了数据库及表时你首先想到的就是向数据库的表中输入数据这就牵涉到如何向数据库增加数据下面我们就来探讨一下这个问题:
一般我们常用的方法是insert语句(这里假定各位的版本都不是很低)她有以下几种形式:
insert into tablename values(valuevalue)
insert into tablename(fieldnamefieldname) values(valuevalue)
insert into tablename set fieldname=valuefieldname=value
insert into tablename(fieldnamefieldname) select fieldnamefieldname from tablename
以上基本上罗列了用insert插入数据的方法当然你也可以用insert语句将几行同时插入到一个表中如下所示:
insert into tablename values()()
在mysql运行环境下我们还可以用LOAD DATA 语句把文件里面的数据读取录入到表里面一般来讲因为此文件是由服务器在主机上直接读取的所以你必须具有file权限且文件必须是完全可读当你版本够新的话你可以给出local这样由于你是从客户机上读取该文件并将内容传送到服务器你就不需要file权限
如果你没有给出local则服务器按如下方法对其进行定位:
)如果你的filename为绝对路径则服务器从根目录开始查找该文件
)如果你的filename为相对路径则服务器从数据库的数据目录中开始查找该文件
如果你给出了local则文件将按以下方式进行定位:
)如果你的filename为绝对路径则客户机从根目录开始查找该文件
)如果你的filename为相对路径则客户机从当前目录开始查找该文件
说了半天也许你还不明白这具体的格式看下面先:
LOAD DATA [LOCAL] INFILE filename into table tablename import_options [(fieldname_list)]
import options的语法为:
fields
terminated by char
enclosed by char
escaped by char
lines
terminated by string
下面我们对其进行一些说明:
)fields terminated by char 指定分隔列的字符.缺省时假定列值由制表符分隔.
)fields enclosed by char 指明列值应包括在指定的字符中.通常用引号.缺省时假定列值不包括在任何字符中.
)fields escaped by char 表示用于转义特殊字符的转义符.缺省时表示无转义符
)lindes escaped by string 指定结束输入行的串(可以是多字符的).缺省时假定由换行符终止行
需要注意的是转义字符的使用 如:\ 表示单引号\ 表示双引号 等等另外还有一些选项这里没有具体谈到如 ignore n lines 她可以控制文件的前n行不被读入数据库详细请看mysql中文参考
说了上面这么多给一行命令大家具体体会一下:
load data [local] infile sampletxt into table sample fields terminated by enclosed by \
在系统命令行下你可以用mysqlimport实用程序她将文本文件的内容读取到已有表中(其实mysqlimport起的作用就是实现load data命令行的接口)调用完mysqlimport后她生成一个load data 语句语法基本上和load data差不多:
mysqlimport [options] sample_db filename
同样给条命令看一下吧:
mysqlimport Cu root [local] Cfieldsterminatedby= fieldsenclosedby=\ samp_db samp_tabletxt
(REMARK:此语句中samp_db为指定的数据库要录入数据的表由文件名参数确定文件名去掉其任何扩展名留下的就是表名所以此语句中录入数据的表名为samp_table也就是说在执行这条语句时首先应该肯定表samp_table存在另外如果你有多个文件需要装入同一个表里你可以用samp_tablentxt来处理)