MySQL使用心得
数据导入的权限问题
MySQL数据库的权限问题,在如下的隐藏路径是权限开放的:
C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/
需要导入数据时,将文件放在改文件夹下面即可。
否则会报如下错误信息:
[Err] 1290 : The MySQL server is running with the
- - secure -file -priv option
导出数据库
很多时候,前端开发人员需要直接使用sql数据库,此时需要格式转化并导出;可以使用navicat等连接工具直接格式转储,也可以在命令行中实现,这里以命令行为例:
进入windows的cmd,输入命令
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
Impala使用心得
数据准备
为了方便代码显示和对比,自己创建一个表;可以之后根据需要追加数据:
drop table if exists jy_temp_tt001;
create table jy_temp_tt001 (
name string,
gender string,
date1 string,
na string,
salary string
)
stored as parquet;
insert into jy_temp_tt001 values
('张三','男','20160910','CNH','5000.00'),
('王石','男','20160920','CNH','6000.00'),
('李丽','女','20160910','TAI','5000.50'),
('王凯','男','20161020','US','7500.00'),
('杨帆','女','20160325','CNH','6000.50');
compute stats jy_temp_tt001;
name | gender | date1 | na | salary |
---|---|---|---|---|
张三 | 男 | 20160910 | CNH | 5000.00 |
王石 | 男 | 20160920 | CNH | 6000.00 |
李丽 | 女 | 20160910 | TAI | 5000.50 |
王凯 | 男 | 20161020 | US | 7500.00 |
杨帆 | 女 | 20160325 | CNH | 6000.50 |
子查询
任何子查询必须带有别名alias
删除和更新操作
在Impala中不能直接delete某一条记录,不能update表记录,也不能truncate表的内容;
只能另外追加insert into和整表替换insert overwrite。例如:
insert into jy_temp_tt001 values
('王俊树','男','20161120','US','7000.00');
追加之后便在原来的数据表中,再多这样一条记录。
列拼接
在Oracle中使用“|| ‘+’ ||”进行列的拼接;而Impala中为:
concat(col1,col2, …)
直接拼接,无分隔符;可多个字段拼接,如:
select concat('[',name,']',salary) as a1 from jy_temp_tt001;
a1 |
---|
[王俊树]7000.00 |
[杨帆]6000.50 |
[张三]5000.00 |
[王石]6000.00 |
[李丽]5000.50 |
[王凯]7500.00 |
其他的拼接关键字有:
concat_ws(sep, col1, col2) 指定了分隔符sep的拼接,如:
select concat_ws(' | ',name,gender,salary) as a2 from jy_temp_tt001;
多行合并为一行
很多情况下,同一组字段下,会有很多对应字段值,可以使用group_concat整合为一行,美观且节省运行成本:
select group_concat(name, ' | ') as a3 from jy_temp_tt001;
更改列名和表名
表名的更改与其他sql语句类似:
alter table jy_temp_tt001 rename to jy_tmp;
列名的更改:
alter table jy_temp_tt001
change column date1 date2 string;
这里date1是原来的列名,date2是新的列名。