在练习猴子的《SQL面试宝典》第26题时,案例数据突然激增到三千多条,已经无法像之前的面试题一样自己手动输入数据建立新表了,于是开启了为期一天的数据导入斗争中……
具体步骤如下:
1. 如果是多sheet excel 表,需要先将sheet拆分;
2. 将excel表转换为csv文件——手动 or 代码
3. 导入csv文件——手动点 or 代码
由于我的excel表是多个sheet组成的,所以第一百度了多sheet excel表的导入方法,发现需要将每个sheet单独生成一个表,才能导入。
多sheet拆分操作方法有两种:
1. 直接在excel中手动拆分sheet(适用于sheet较少的情况)。拆分后由于sql需要读取csv文件,因此保存时要选择保存为csv
⚠注意:在保存时要选择逗号隔开的那个,而不是utf-8的那个(亲测utf-8还是会报错)

2. 代码拆分,我尝试的是python,用文言一心生成的代码直接使用。但是目前没有解决的问题是encoding不管是设成utf-8还是utf-8-sig在导入数据时都会报错 ╥﹏╥…

方法一:直接在workbench中导入数据
由于我需要导入的数据仅有三千多条,我想应该不算是数据量大的情况,所以我首选了直接在workbench中点点点,实现数据导入的方式(还有一个缘由是这是我直接百度搜索到的第一个方法。。。完整步骤在这篇CSDN,踩坑后才搜到这篇真的我哭死,对没错,坑都在数据格式上,所以必定得注意!!!)
简单来说就是打开workbench后,右键tables,选择 Table Data Import Wizard,然后选择文件路径,注意一下数据变量的结构格式就好了。
本来到这以为就万事大吉了,没想到导入进程超级超级慢,我只好另寻他法了。
方法二:使用命令导入数据
在client使用命令导入数据我是按照这篇进行的,步骤是
1. 修改my.ini文件中的secure-file-priv(这个文件一般会在C:ProgramDataMySQLMySQL Server 8.0my.ini)
” secure-file-priv=路径 ” 是用来限制 LOAD DATA INFILE、SELECT … INTO OUTFILE 和 LOAD_FILE() 函数只能访问指定目录中的文件。要允许从任意位置加载文件,得将secure-file-priv 设置为空字符串(但请注意,这可能会带来安全风险)。
对了,如果修改后保存不了,得对my.ini文件的权限进行修改


2. 打开local-infile,用‘ set global local-infile =on;’
可惜,在这一步我又碰到问题了。按照步骤最后导入数据时它又给我报错了(如果此步不报错,需要注意文件路径要使用 / 而不能用 ,会发生找不到文件的情况)

到了这个时候,我已经心力交瘁了,就又去问了文心一言,它给了我解决办法,我在client里一顿输入后依旧不行…..到底是怎么回事啊!!!我在心里怒吼,直到我搜索到了这个,我才知道原来这个命令是要在 cmd 里输入的(;´༎ຶД༎ຶ`)
cmd命令步骤如下:
1. 登录mysql账号,这里是root
2. 输入账号密码
3.定位数据库
4.导入csv文件(需要事先在workbench中建好表格,导入时忽略第一行标题)

至此,终于成功导入数据啦!后续就是在cmd中输入命令导入了剩下的两张表,普天同庆啊啊啊啊啊!!!