改编自学校实验,涉及一些字符集相关的问题。

索引

  1. 建库
  2. 导入数据
  3. 最终脚本

下载数据 点击这里

建库

create.sql

DROP DATABASE IF EXISTS orderdb;
CREATE DATABASE orderdb;
USE orderdb; CREATE TABLE employee (
employee_no VARCHAR(8),
employee_name VARCHAR(10),
sex CHAR(1),
birthday DATE,
address VARCHAR(50),
telephone VARCHAR(20),
hiredate DATE COMMENT '聘用日期',
department VARCHAR(30),
headship VARCHAR(10) COMMENT '职务',
salary DECIMAL(8,2), PRIMARY KEY(employee_no) ) ENGINE=INNODB DEFAULT CHARSET=utf8; CREATE TABLE customer (
customer_no VARCHAR(9),
customer_name VARCHAR(40),
telephone VARCHAR(20),
address VARCHAR(40),
zip VARCHAR(6), PRIMARY KEY(customer_no) ) ENGINE=INNODB DEFAULT CHARSET=utf8; CREATE TABLE product (
product_no VARCHAR(9),
product_name VARCHAR(40),
product_class VARCHAR(20),
product_price DECIMAL(7,2), ) ENGINE=INNODB DEFAULT CHARSET=utf8; order_no VARCHAR(12),
customer_no VARCHAR(9),
saler_no VARCHAR(8),
order_date DATE,
order_sum DECIMAL(9,2),
invoiceno CHAR(10) COMMENT '发票号码', PRIMARY KEY (order_no), FOREIGN KEY (customer_no)
REFERENCES customer(customer_no) ) ENGINE=INNODB DEFAULT CHARSET=utf8; CREATE TABLE order_detail (
order_no VARCHAR(12),
product_no VARCHAR(9),
quantity INT,
price DECIMAL(7,2), PRIMARY KEY (order_no, product_no), FOREIGN KEY (order_no)
REFERENCES order_master(order_no),
FOREIGN KEY (product_no)
REFERENCES product(product_no) ) ENGINE=INNODB DEFAULT CHARSET=utf8;

Linux 环境下运行脚本:

root@xkfx:~/sql-exercise# readlink -f create.sql
/root/sql-exercise/create.sql # 复制这个路径
root@xkfx:~/sql-exercise# mysql -uroot -p
mysql > SOURCE /root/sql-exercise/create.sql # 运行脚本

导入数据

在 Linux 环境下或许需要修改 txt 的编码格式:

root@xkfx:~/sql-exercise# iconv -f gb18030  -t utf8 customer.txt -o customer.txt

并且待导入的 txt 文件必须放在特定目录下,查看特定目录:

mysql> show variables like '%secure%';
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_auth | OFF |
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+

如上所示 /var/lib/mysql-files/ 就是特定的目录。导入数据:

LOAD DATA INFILE 'file_path' INTO TABLE table_name
FIELDS TERMINATED BY 'xxx'
LINES TERMINATED BY 'xxxx'

示范如下:

mysql> USE orderdb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
mysql> LOAD DATA INFILE '/var/lib/mysql-files/customer.txt' INTO TABLE customer
-> FIELDS TERMINATED BY ','
-> LINES TERMINATED BY '\n';
Query OK, 10 rows affected, 10 warnings (0.00 sec)
Records: 10 Deleted: 0 Skipped: 0 Warnings: 10

这个时候试着 SELECT 一下 customer 中的数据,有很大概率是乱码的,这个时候不要着急,你需要重新设定字符集再来一遍:

SHOW VARIABLES LIKE "%char%"; # 显示字符集的设定情况
SET character_set_database=utf8; # 像这样,把不是 utf8 的设定为 utf8
SET NAMES 'utf8'; SOURCE /root/sql-exercise/create.sql LOAD DATA INFILE '/var/lib/mysql-files/customer.txt' INTO TABLE customer
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

补充:平时创建表的时候要保证 ↓

以及:

CREATE TABLE xxxxx (

)    ENGINE=INNODB DEFAULT CHARSET=utf8;

才不容易出现乱码。

最终脚本

为了方便起见,只需要把相应文件放在 特定位置,修改一下脚本中的路径,最后运行最终脚本就可以了:

populate.sql

LOAD DATA INFILE '/var/lib/mysql-files/customer.txt' INTO TABLE customer
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'; LOAD DATA INFILE '/var/lib/mysql-files/employee.txt' INTO TABLE employee
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'; LOAD DATA INFILE '/var/lib/mysql-files/ordermaster.txt' INTO TABLE order_master
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'; LOAD DATA INFILE '/var/lib/mysql-files/product.txt' INTO TABLE product
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'; LOAD DATA INFILE '/var/lib/mysql-files/orderdetail.txt' INTO TABLE order_detail
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

最终脚本.sql

SET character_set_database = utf8;
SET character_set_server = utf8;
SET NAMES 'utf8';
SHOW VARIABLES LIKE "%char%";
SOURCE /root/sql-exercise/create.sql
SOURCE /root/sql-exercise/populate.sql
mysql> SOURCE /root/sql-exercise/orderdb.sql

MySQL笔记(三)由txt文件导入数据的更多相关文章

  1. Linux下通过txt文件导入数据到MySQL数据库

    1.修改配置文件 在 /etc/my.conf 中添加 local_infile=1 2.重启MySQL >service mysqld restart 3.登录数据库 登录时添加参数 --lo ...

  2. ubuntu下面mysql,通过载入txt文件初始化数据表

    环境:ubuntu12.04   mysql(通过apt安装) (1)根据数据表中的属性列,对应在txt中构造记录(一行对应一条记录),不同属性之间通过tab键(以/root目录下构建的init.tx ...

  3. 记录一次从txt文件导入数据的python下的MySQL实现

    环境: python2.7 ComsenzXP自带MySQL 安装python-MySQL模块 数据格式:txt格式的账号信息. 数据一行一条数据. 难点:有的行只有账号,没有密码:有的为空行:有的行 ...

  4. 用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表

    用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表 下面的内容的实验环境我是在SQLSERVER2005上面做的 之前在园子里看到两篇文章<C# 读取纯真 ...

  5. 将TXT文件 导入 sqlserver数据库

    情景一:​ 数据库已存在旧表名 old_table,列名old_column_name. 将TXT文件导入数据库已存在旧表old_table中,导入过程中需注意 数据源中列名可全部不修改 或 全部修改 ...

  6. Selenium(九)测试用例数据分离与从文件导入数据

    一.测试用例数据与代码分离 1.从之前的脚本来看,我还是把数据写在了脚本中,这样脚本的通用性很差.全局的数据其实可以从数据库.文本文件.Excel中直接读取. 2.代码和用户数据分离: 3.数据设计- ...

  7. win10安装mysql过程&&链接过程&&备份和导入数据&&grant命令

    win10安装mysql过程&&链接过程&&备份和导入数据&&grant命令   一 .安装 一开始在mysql官网(https://www.mysql ...

  8. python操作txt文件中数据教程[4]-python去掉txt文件行尾换行

    python操作txt文件中数据教程[4]-python去掉txt文件行尾换行 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文章 python操作txt文件中数据教程[1]-使用pyt ...

  9. python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

    python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...

随机推荐

  1. [分布式系统学习] 6.824 LEC1 MapReduce 笔记

    什么是Map-Reduce呢? Map指的是一个形如下面定义的函数. def Map(k, v): //return [(k1, v1), (k2, v2), (k3, v3), ...] pass ...

  2. ABP之仓储

    一.仓储的简单介绍 仓储(Repository):这是属于领域层的重要组成部分,它的作用就是完成和数据库的交互工作,仓储里封装了很多操作数据库的方法.所以说仓储是数据映射层和领域层的交互中介.ABP针 ...

  3. php无限极分类递归与普通

    1. 递归 public function getInfo(){$data=$this->select();$arr=$this->noLimit($data,$f_id=0,$level ...

  4. MongoDB的"副本“数据库服务器

    1.假设1数据库服务器为活跃服务器(主服务器),2和3为备份服务器,当1出现故障的时候,那么会在2和3中推选出一个(根据权重的等规则)作为活跃服务器,而当1又恢复正常了之后呢,它将以备份服务器的身份出 ...

  5. 【Loadrunner】Error -26601: Decompression function 错误解决、27728报错解决方案

       一. Error -26601: Decompression function 错误解决 Action2.c(30): Error -26601: Decompression function ...

  6. Unity3d 镜面折射 vertex and frag Shader源代码

    Unity3d 镜面折射  网上能找到的基本上是固定管道或表面渲染的shader. 特此翻译为顶点.片段渲染的Shader, 本源代码仅仅涉及shader与cs部分, 请自行下载NGUI  unity ...

  7. android加载gif图片

    Android加载GIF图片的两种方式 方式一:使用第三开源框架直接在布局文件中加载gif 1.在工程的build.gradle中添加如下 buildscript { repositories { m ...

  8. 下厨房6月26日数据丢失事故总结 MYSQL主分区被rm 命令误删除

    下厨房6月26日数据丢失事故总结 MYSQL主分区被rm 命令误删除 http://tech.xiachufang.com/?p=18 在6月26日凌晨12点左右,我们在做线上数据库的备库时,误将线上 ...

  9. Celery框架简单实例

    Python 中可以使用Celery框架 Celery框架是提供异步任务处理的框架,有两种用法,一种:应用程式发布任务消息,后台Worker监听执行,好处在于不影响应用程序继续执行.第二种,设置定时执 ...

  10. HTML5-Canvas 绘制线条的深入认识

    1. lineWidth 线条宽度 ( 示例: lineWidth = 10 ) 2. lineCap 线条帽(线条两端的形状) ( 示例: lineCap = butt(default) | rou ...