Windows下MySQL学习(三):让MySQL数据库支持中文,Matlab导入excel表到数据库
2018-04-10 19:38
821 查看
1.疑难问题
通过sql语言向数据库中INSERT中文数据的时候,添加的时候就会报syntax error 或者 显示的是乱码原因:当初安装数据库是默认的编码是latin1编码(Latin1是ISO-8859-1的别名,有些环境下写作Latin-1),这个不支持中文。
在MySQL Query Browser里查看当前相关的character变量如下,
发现的确server和database都是latin1,而只要把它们修改成UTF8,就可以了。
#查看的语句,当然也可以在cmd的mysql下面查询。 show variables like 'characters%';
第一步 修改database的值
建database的时候就要设置character 是UTF8,否则自动默认的都是lartin1,如下建database std2CREATE DATABASE std2 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
如下建立table stdinfo
create TABLE stdinfo (name CHAR(16),id CHAR(32),gender CHAR, grade CHAR(8), class CHAR(8)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
结果就变更如下:
第二步 修改server的值
在安装的mysql目录下,修改my.ini的内容;my.ini没有的话就自己建(复制my_default.ini),再把下面的内容加上去。[mysqld] port=3306 character-set-server=utf8 [client] default-character-set=utf8
然后是在cmd下面关闭mysql,再启动mysql,MySQL Administrator也重新登上去,打开MySQL Query Browser。
查看的结果如下:
可以参考:
http://blog.csdn.net/zljjava/article/details/7948111
http://www.cnblogs.com/alamps/archive/2012/11/27/2791312.html
http://dev.mysql.com/doc/refman/5.6/en/faqs-cjk.html
2. Matlab导入excel表到数据库
function s = SavexlsToSQL(filedir) % 在已有的数据库std2 下创造数据表stdinfo q=database('std2','root','123456','com.mysql.jdbc.Driver','jdbc:mysql://localhost:3306/std2'); cmd = sprintf('create TABLE stdinfo (name CHAR(16),id CHAR(32),gender CHAR, grade CHAR(8), class CHAR(8)) ENGINE=InnoDB DEFAULT CHARSET=utf8;'); curs = exec(q,cmd); % 读入学生信息xls,filedir的地址根据实际情况自己改一下 filedir = 'D:\study\A20\android app开发相关\测试文件\namelist.xls'; [num,txt,raw] = xlsread(filedir,-1); %逐行插入学生信息到stdinfo for i = 2:length(txt) line = strcat('''',txt{i,1},''', ''', txt{i,3},''', ''',... txt{i,2},''', ''', txt{i,4},''', ''', txt{i,5},''''); cmd = sprintf('INSERT INTO std2.stdinfo VALUES(%s)',line); curs = exec(q,cmd); curs=fetch(curs); sprintf(curs.Message) end curs = exec(q,'select * from stdinfo'); curs=fetch(curs);
在MySQL Query Browser 查看的效果如下:
3. 数据表中添加新的列,以及更新值。
ALTER: 为数据表加入新的一列dir,存学生图片的位置UPDATE:为新列里面的dir赋予跟学生学号id对应的图片名称,用WHERE来定位。
用matlab实现如下:
注意matlab写字符’ 和字符 \ 的方法
% 加入一个新列 dir ,存学生图片的地址 cmd = sprintf(' ALTER TABLE std2.stdinfo ADD dir CHAR(64)'); for i = 2:length(txt) %\\\\的意义: \\代表的是matlab下的一个\,第二个\\代表写入Mysql的一个\.最后写到Mysql下就是显示 %唯一一个\. savedir = sprintf('D:\\\\study\\\\A20\\\\android app开发相关\\\\测试文件\\\\stuImages\\\\'); pos = strcat(savedir,txt{i,3}); cmd = sprintf('UPDATE std2.stdinfo SET dir=''%s.jpg'' WHERE id=''%s'' ;',... pos, txt{i,3}); curs = exec(q,cmd); curs=fetch(curs); sprintf(curs.Message) end
在MySQL Query Browser 查看的效果如下:
想自己做实验的请下载下面的excel压缩包:
http://download.csdn.net/detail/dahunbi/9668071
相关文章推荐
- Windows下MySQL学习(一):安装和启用,新建数据库和数据表,matlab连接MySQL
- MySQL中导入中文字符解决方案[Data too long for column XX at row n] 分类: 数据库 2012-11-02 14:30 1286人阅读 评论(0) 收藏
- hadoop学习之-Sqoop与关数据库(mysql)之间导入实践
- mysql自动定时备份数据库的最佳方法-支持windows系统
- windows下mysql 数据库的导入导出
- 把wikipedia中文数据库导入mysql
- mysql在windows环境下备份和导入数据库——mysqldump工具
- Windows下mysql中文导入出错:ERROR 1366 (HY000)
- mysql的小知识点(关于数据库的导入导出 对于windows)
- ThinkPHP学习(三)配置PHP5支持MySQL,连接MySQL数据库
- 【mysql学习系列】Mysql数据库导入官方示例数据库
- python Mysql 数据库导入文本数据,中文乱码
- mysql导入mssql 怎么把mysql数据库导入到mssqlserver 数据库 转帖
- windows + CentOS查看和修改MySQL字符集,使其支持中文
- linux下链接mysql 创建数据库,导入,导出mysql数据库命令
- Windows命令提示符下让mysql支持中文(笔记)
- MySql学习很好的东西 表格数据导入数据库
- mysql Sphinx在windows下安装使用[支持中文全文检索]
- 6.(Mysql数据管理相关)连接MYSQL,修改密码,增加新用户,数据库相关命令,表操作相关命令,数据相关命令,数据库sql导入和导出,备份数据库,查看不到mysql数据库的解决办法
- mysql数据库中导入数据库无法显示中文,中文乱码(解决)Window/Linux