实验楼之一个简单的课程数据库

来源:互联网 发布:匕首cad图纸数据 编辑:程序博客网 时间:2024/05/16 11:56

看这个题的时候并不知道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,deleteshiyanlou.* 后面的.* 不能省略的,详情参考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.csv1,aa,aa2,aa,aa3,bb,bb4,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 usermysql>charscter set utf8mysql>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文件 */