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 阅读(308) 评论(0) 编辑 收藏 举报