IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> source命令执行sql脚本在DOS界面出现中文乱码问题 -> 正文阅读

[大数据]source命令执行sql脚本在DOS界面出现中文乱码问题

source命令执行sql脚本在DOS界面出现中文乱码问题

1 问题出现的形式

1.1 插入不进去中文(1366问题)

1.1.1 错误示例图

在这里插入图片描述

1.1.2 原因

因为你文件是以utf8格式进行编写的,导入的时候,会默认以ansi/gbk的格式进行指令的执行,表结构你又设置的字符集又是utf8,表里面的所有字段都会以utf8格式进行存储而你是以ansi/gbk进行输入的,两种编码都不匹配,自然会出现编码的异常了

总结:要求插入时的脚本的字符集要与数据库定义的字符集保持一致,

1.2 能插入中文,但是查询的时候会显示乱码

1.2.1 错误示例图

在这里插入图片描述

1.2.2 原因

因为你再INSERT INTO前执行了set names utf8语句

那么他就会把文件的插入指令以utf8的形式去读取执行

你的表结构设置的是utf8格式,字段也自然都是utf8格式

那么插入的时候会成功,不会报错

但是因为dos界面默认是ansi/gbk格式进行展示的
在这里插入图片描述

因此你在展示的过程中就需要使用set names gbk让其能正常显示

总结:想要在DOS界面正常显示中文,在脚本的插入数据前加上set name utf8,在插入完成所有的数据后

再一次set names gbk;

2 解决问题的两种思路

2.1 更改sql脚本的格式的保存格式为ANSI编码

2.1.1 使得sql脚本的编码改为ANSI编码

在这里插入图片描述

在这里插入图片描述

2.1.2 在插入语句前设置set names gbk格式

在这里插入图片描述

2.1.3 脚本运行截图

在这里插入图片描述

2.1.4 脚本sql语句

/*注意脚本文件要保存成ANSI编码格式的文件*/
DROP DATABASE IF EXISTS temp02;
CREATE DATABASE IF NOT EXISTS `temp02` CHARACTER SET utf8;
use temp02;
/*现有父,后有儿子*/
CREATE TABLE IF NOT EXISTS `my_class`(
   `cid` int(10) auto_increment comment '班级id',
    /*外键在主表中应该是唯一键*/
   `cno` VARCHAR(30) NOT NULL DEFAULT '*' UNIQUE comment '班级编号',
   `cname` VARCHAR(255) NOT NULL DEFAULT '*' UNIQUE comment '班级名称',
   PRIMARY KEY(cid)
);
CREATE TABLE IF NOT EXISTS `my_student`(
   `sid` int(10) auto_increment comment '学生id',
   `sno` VARCHAR(30)  NOT NULL DEFAULT '*' UNIQUE comment '学生学号',
   `sname` VARCHAR(30) NOT NULL DEFAULT '*' comment '学生姓名',
   `cno` VARCHAR(30) NOT NULL DEFAULT '*' comment '班级编号',
   PRIMARY KEY(sid),
   FOREIGN KEY(cno) references my_class(cno)
);
/*插入班级表的相关信息*/
set names gbk;
INSERT INTO my_class (cno,cname) VALUES ('sdfz2001','师大附中高一1班');
INSERT INTO my_class (cno,cname) VALUES ('csyz2002','长沙一中高二2班');
INSERT INTO my_class (cno,cname) VALUES ('cq2003','长郡中学高三3班');
/*插入学生表的相关信息*/
INSERT INTO my_student (sno,sname,cno) VALUES ('200110','张三','sdfz2001');
INSERT INTO my_student (sno,sname,cno) VALUES ('200117','李四','sdfz2001');
INSERT INTO my_student (sno,sname,cno) VALUES ('200210','张三','csyz2002');
INSERT INTO my_student (sno,sname,cno) VALUES ('200217','李四','csyz2002');
INSERT INTO my_student (sno,sname,cno) VALUES ('200310','张三','cq2003');
INSERT INTO my_student (sno,sname,cno) VALUES ('200317','李四','cq2003');
SELECT * FROM my_class;
SELECT * FROM my_student;

2.2 更改脚本文件类型(.sql)为utf8的编码格式

2.2.1 是得sql脚本的编码改为UTF8编码

在这里插入图片描述
在这里插入图片描述

2.2.2 插入语句前set names utf8,保证文件类型和指令执行的类型保持一致

在这里插入图片描述

2.2.3 插入语句完成后set names gbk,保证dos界面(控制台)能正常显示

在这里插入图片描述

2.2.4 脚本运行截图

在这里插入图片描述

2.2.5脚本sql语句(文件需要保存为UTF8格式)

/*脚本sql文件为.sql的后缀名文件
文件的编码格式需要保存为utf8的编码格式
*/
DROP DATABASE IF EXISTS temp02;
CREATE DATABASE IF NOT EXISTS `temp02` CHARACTER SET utf8;
use temp02;
/*现有父,后有儿子*/
CREATE TABLE IF NOT EXISTS `my_class`(
   `cid` int(10) auto_increment comment '班级id',
    /*外键在主表中应该是唯一键*/
   `cno` VARCHAR(30) NOT NULL DEFAULT '*' UNIQUE comment '班级编号',
   `cname` VARCHAR(255) NOT NULL DEFAULT '*' UNIQUE comment '班级名称',
   PRIMARY KEY(cid)
);
CREATE TABLE IF NOT EXISTS `my_student`(
   `sid` int(10) auto_increment comment '学生id',
   `sno` VARCHAR(30)  NOT NULL DEFAULT '*' UNIQUE comment '学生学号',
   `sname` VARCHAR(30) NOT NULL DEFAULT '*' comment '学生姓名',
   `cno` VARCHAR(30) NOT NULL DEFAULT '*' comment '班级编号',
   PRIMARY KEY(sid),
   FOREIGN KEY(cno) references my_class(cno)
);
/*插入班级表的相关信息*/
set names utf8;
INSERT INTO my_class (cno,cname) VALUES ('sdfz2001','师大附中高一1班');
INSERT INTO my_class (cno,cname) VALUES ('csyz2002','长沙一中高二2班');
INSERT INTO my_class (cno,cname) VALUES ('cq2003','长郡中学高三3班');
/*插入学生表的相关信息*/
INSERT INTO my_student (sno,sname,cno) VALUES ('200110','张三','sdfz2001');
INSERT INTO my_student (sno,sname,cno) VALUES ('200117','李四','sdfz2001');
INSERT INTO my_student (sno,sname,cno) VALUES ('200210','张三','csyz2002');
INSERT INTO my_student (sno,sname,cno) VALUES ('200217','李四','csyz2002');
INSERT INTO my_student (sno,sname,cno) VALUES ('200310','张三','cq2003');
INSERT INTO my_student (sno,sname,cno) VALUES ('200317','李四','cq2003');
set names gbk;
SELECT * FROM my_class;
SELECT * FROM my_student;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:12:48  更:2022-08-19 19:17:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:38:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码