MySQL笔记(三)由txt文件导入数据
改编自学校实验,涉及一些字符集相关的问题。
索引
下载数据 点击这里
建库
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文件导入数据的更多相关文章
- Linux下通过txt文件导入数据到MySQL数据库
1.修改配置文件 在 /etc/my.conf 中添加 local_infile=1 2.重启MySQL >service mysqld restart 3.登录数据库 登录时添加参数 --lo ...
- ubuntu下面mysql,通过载入txt文件初始化数据表
环境:ubuntu12.04 mysql(通过apt安装) (1)根据数据表中的属性列,对应在txt中构造记录(一行对应一条记录),不同属性之间通过tab键(以/root目录下构建的init.tx ...
- 记录一次从txt文件导入数据的python下的MySQL实现
环境: python2.7 ComsenzXP自带MySQL 安装python-MySQL模块 数据格式:txt格式的账号信息. 数据一行一条数据. 难点:有的行只有账号,没有密码:有的为空行:有的行 ...
- 用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表
用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表 下面的内容的实验环境我是在SQLSERVER2005上面做的 之前在园子里看到两篇文章<C# 读取纯真 ...
- 将TXT文件 导入 sqlserver数据库
情景一: 数据库已存在旧表名 old_table,列名old_column_name. 将TXT文件导入数据库已存在旧表old_table中,导入过程中需注意 数据源中列名可全部不修改 或 全部修改 ...
- Selenium(九)测试用例数据分离与从文件导入数据
一.测试用例数据与代码分离 1.从之前的脚本来看,我还是把数据写在了脚本中,这样脚本的通用性很差.全局的数据其实可以从数据库.文本文件.Excel中直接读取. 2.代码和用户数据分离: 3.数据设计- ...
- win10安装mysql过程&&链接过程&&备份和导入数据&&grant命令
win10安装mysql过程&&链接过程&&备份和导入数据&&grant命令 一 .安装 一开始在mysql官网(https://www.mysql ...
- python操作txt文件中数据教程[4]-python去掉txt文件行尾换行
python操作txt文件中数据教程[4]-python去掉txt文件行尾换行 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文章 python操作txt文件中数据教程[1]-使用pyt ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
随机推荐
- WF的简单使用
WWF(Windows Workflow Foundation):是微软提供的工作流技术,工作流就是对工作流程的规范和抽象.主要有三个部分Activity(活动).Runtime(工作流运行时)和To ...
- java字符串的替换
split也是用到了正则表达式 replace 是没有用正则表达式,全部替换 replaceAll 和replaceFirst是用了正则表达式 replaceAll替换所有,replaceFirst是 ...
- Saltstack之api
Salt-API 1,htps证书 2,配置文件 3,验证.使用PAM验证 4,启动salt-api 安装salt-api yum -y install salt-api 创建用户 useradd - ...
- 基于Solr和Zookeeper的分布式搜索方案的配置
1.1 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候 ...
- Pandas的append方法
相当于添加一行记录,这个方法也是比较管用的: # 测试pandas.append方法 def use_pd_append(): df = pd.DataFrame([[1, 2], [3, 4]], ...
- ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解
感谢一路走来默默陪伴和支持的你~~~ -------------------欢迎来访,拒绝转载------------------- 在之前的利用Python分析GP服务运行结果的输出路径 & ...
- 网站优化(SEO)的10大误区
前段时间大前端也有关于SEO的文章贡献给广大读者,今日,再发一文,网站优化(SEO)的10大误区.很多新手站长初次接触SEO,感受到SEO 的无穷魅力,想要做一位优秀的SEOer,然而新手朋友在进行S ...
- PHP主动断开与浏览器的连接
以前整理过一篇<关于PHP连接处理中set_time_limit().connection_status()和ignore_user_abort()深入解析>,是解说浏览器client断开 ...
- 梯度下降算法(Gradient Descent)
近期在搞论文,须要用梯度下降算法求解,所以又一次整理分享在这里. 主要包含梯度介绍.公式求导.学习速率选择.代码实现. 梯度下降的性质: 1.求得的解和选取的初始点有关 2.能够保证找到局部最优解,由 ...
- 3.对神经网络训练中Epoch的理解
代表的是迭代的次数,如果过少会欠拟合,反之过多会过拟合 EPOCHS 当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch. 然而,当一个 epoch 对于计算机而言太 ...