看这个题的时候并不知道csv文件是什么,去百度了一下,顺便又搜了一下将这类文件导入mysql数据库中的方法。
这篇文章介绍了从linux和windows情况下分别导入的情况:http://blog.chinaunix.net/uid-23284114-id-3196638.html,非常感谢这位博主的分享
好了,开始做题。
- 首先题目说明,服务器中的MySQL还未启动,同时告知了root账户的密码为空,所以第一要务先开启mysql服务
-
service mysql start
- 第二步当然就是就入到数据库中操作啦,不进去怎么往下进行呢,是吧。
题目说啦,要先创建一个名称为实验楼的数据库 -
create database shiyanlou;
选择数据库,根据题目要求创建三个表(这里没有要求,属性相对设置简单点)
create table `user`( `id` int primary key, `name` char(32) not null )charset=utf8;
create table `course`( `id` int primary key, `name` char(32) not null )charset=utf8;
咳咳,补充一下,这个地方我忘记直接加外键怎么弄得了,我做的时候是在外面弄得
create table `usercourse`( `user_id` int not null, `course_id` int not null, `study_id` int not null )charset=utf8;
添加外键
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
alter table usercourse add constraint FK_1 foreign key(user_id) REFERENCES user(id) alter table usercourse add constraint FK_2 foreign key(course_id) REFERENCES course(id)
其中
constraint FK_1
也可以不写,会默认起一个名字
- 表已经创建好了,下一步就是将提供的文件下载下来。命令已经给好,可以直接用。
下载好了之后需要解压,因为是zip文件,所以使用unzip解压缩 -
unzip loudatabase.zip
- 哦,对,还有用户没添加,那就先添加用户吧,反正我是操作完表之后再添加的用户,应该差不太多吧。
按照题目要求,添加一个用户名和密码都为shiyanlou的数据库 -
create user 'shiyanlou'@'localhost' identified by 'shiyanlou';
要求有可读可写权限,好吧
grant all privileges on shiyanlou.* to 'shiyanlou'@'localhost';
在此我是给了这个用户对于shiyanlou数据库的所有权限,
all
可以替换为select,update,insert,delete
,shiyanlou.*
后面的.*
不能省略的,详情参考mysql手册 - 下一步就是将csv文件导入数据库中所对应的表中
再次感谢上面那位博主的分享。 -
load data infile '/home/shiyanlou/loudatabase/shiyanlou_usercourse.csv' --后面所导入的文件路径 into table usercourse --选择表 character set utf8 --这个地方是防止中文乱码 fields terminated by ',' --以什么作为分割符 enclosed by '"'; --被什么包围
三个表中的数据都是同一种导入方法,表名和路径名一一对应即可
同时附带一下windows情况下的导入
LOAD DATA INFILE "d:/insert_data.csv" REPLACE INTO TABLE DEMO CHARACTER SET gb2312 FIELDS TERMINATED BY "," ENCLOSED BY "" LINES TERMINATED BY "\r\n"; --这个地方和linux不一样
提交,game over!!!
收官
哈哈
- 附加上在windows下将csv文件导入数据库
1.首先我在任意D盘根目录创建一个文件,路径D:\test.csv
$ touch test.csv $ vim test.csv 1,aa,aa 2,aa,aa 3,bb,bb 4,bb,bb
2.开启MySQL服务,我用的是phpstudy,启动mysql服务就好了,之后ctrl+R->cmd,连接数据库:
> mysql -u xxx -p xxx
3.选择数据库,选择数据表,导入数据
mysql>show databases; mysql>use test; mysql>show tables; mysql># csv文件中的值与表字段的类型应相同 mysql>load data infile 'D:/test.csv' mysql>replace into user mysql>charscter set utf8 mysql>fields terminated by ',' enclosed by '' mysql>lines terminated by '\r\n';
执行结果:
Query OK,4 rows affected(0.04sec) Records: 4 Deleted: 0 Skipped: 0 Warnings: 0
执行的时候可能会报错:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
这是权限问题,打开mysql的配置文件,mysql.ini,在最后一行添上
secure_file_priv=D:/ #后面跟你允许的目录
,之后重启mysql服务即可。/* 2017/12/9 16:46 */
/* 等过两天我在补充如何将mysql数据表导出csv文件 */ - 附加上在windows下将csv文件导入数据库