mysql装载本地文件及模式匹配

  使用load data装载本地文件到表中,文件每行一条记录,列值之间用tab分隔,并按照次序一一列出,对于无值或丢失的情况可以使用\N。但是在使用insert into插入的时候不能使用\N,而应该是NULL。

load data local infile 'path/*.txt' into table tab1
line terminated by '\n';

  比如某一列名为val,那么在查询中使用val is not null 和使用 val != null 是不同的。因为null是特殊的值,不能用普通比较符来比较。在mysql中0和null意味着假而其他值是真。布尔运算的默认真值是1。

  sql中的模式匹配:_表示单个字符,%表示多个或0个字符,这个时候同样不可以使用=等的这种普通比较符,需要用like ,not like 。

select * from 表名 where 列名 like '%b' or '_b'; 

  sql中的扩展正则表达式匹配:需要使用regexp和not regexp (或者是rlike和not rlike)。

  上面这个图片是我从网上找来的,但是感觉不是很好,所以我又找了一个讲正则表达式的链接,感觉写的挺好的,而且我在之前的小项目中就用到了,学以致用嘛。http://deerchao.net/tutorials/regex/regex.htm

  mysql -h 主机名  -u   用户名   -p  登陆到mysql,然后会提示让你输入用户的密码,也可以mysql -h 主机名  -u   用户名   -pXXX  这里的XXX表示密码,一般不要这样子,密码会被别人窃取挪作他用。在-p 后面也可以跟数据库名,指定你要登陆到的数据库。

  今天还学到个在批处理模式下使用mysql,就是把你要执行的mysql语句及命令事先放在一个文件中,然后执行。比如:我在com.txt文件中写入一行

select * from tab1;

然后在命令行键入:

mysql test < com.txt

就相当于在mysql>模式下输入上面的那条select语句。如果显示内容过多可以加管道或者是重定向输出。

  在批处理模式下如果想得到交互式模式的输出,可以加参数-t,如果想先输出执行的命令再输出该条命令执行后的结果,可以用参数-vvv。比如像这样:

mysql -t test < com.txt            mysql -vvv test < com.txt

  也可以在mysql>提示符的模式下运行脚本,像这样:(data.txt相当于上文中的com.txt)

温馨提示:键入mysql之后还需要进入到存放相应表的数据库,然后再执行上述运行脚本的操作。

 

posted on 2013-11-19 16:04  Raining Days  阅读(303)  评论(0编辑  收藏  举报

导航