1 准备工作

1.1 环境准备

操作系统:Microsoft Windows 10 专业工作站版

软件版本:Python 3.9.6

第三方包:

pip install pandas2.1.0

pip install pymysql1.1.0

pip install sqlalchemy==2.0.23

Get-WmiObject -Class Win32_OperatingSystem | Select-Object -Property Caption
python –version
pip install pandas==2.1.0 -i https://mirrors.aliyun.com/pypi/simple/
pip install pymysql==1.1.0 -i https://mirrors.aliyun.com/pypi/simple/
pip install sqlalchemy==2.0.23 -i https://mirrors.aliyun.com/pypi/simple/

1.2 数据库准备

数据库版本:Ver 8.1.0 for Win64 on x86_64 (MySQL Community Server - GPL)

mysql --version
mysql -h 127.0.0.1 -P 3306 -u root -p"123456"

1.3 数据准备

运行以下python代码准备模拟数据用于测试。

import os
if not os.path.exists('./datas'):
os.mkdir('./datas')
text = '''+-------------+--------------+--------------+-------------+
| customer_id | name | visited_on | amount |
+-------------+--------------+--------------+-------------+
| 1 | Jhon | 2019-01-01 | 100 |
| 2 | Daniel | 2019-01-02 | 110 |
| 3 | Jade | 2019-01-03 | 120 |
| 4 | Khaled | 2019-01-04 | 130 |
| 5 | Winston | 2019-01-05 | 110 |
| 6 | Elvis | 2019-01-06 | 140 |
| 7 | Anna | 2019-01-07 | 150 |
| 8 | Maria | 2019-01-08 | 80 |
| 9 | Jaze | 2019-01-09 | 110 |
| 1 | Jhon | 2019-01-10 | 130 |
| 3 | Jade | 2019-01-10 | 150 |
+-------------+--------------+--------------+-------------+'''
with open('./datas/customer.txt','w',encoding='utf-8') as file:
file.write(text)

运行前:

代码运行前如图,只有一个datas.py的文件。

代码运行后如图,在运行前的基础上生成了一个datas的文件夹以及一个存有用来测试的模拟数据文件,也可直接从mysql端复制粘贴并手动创建即可,值得注意的是不能有任何空行。

2 mysql端配置

2.1 连接mysql

在powershell终端使用命令连接mysql数据库,注意这里先不指定需要连接的数据库名。

mysql -h 127.0.0.1 -P 3306 -u root -p"123456"

2.2 确保当前数据库为空

查看当前所在的数据库,确保该值为空。

select database();

2.3 查看此时变量character_set_connection对应的编码值

在确保database()的值为空的前提下查看character_set_connection对应的编码值。

show variables where Variable_name = 'character_set_connection';

变量character_set_connection对应的编码值为gbk,后面的配置需要用到此参数。

2.4 创建数据库

在mysql中创建一个名为mydatabase的数据库默认编码为UTF8供pymysql连接。

DROP DATABASE IF EXISTS mydatabase;
CREATE DATABASE IF NOT EXISTS mydatabase DEFAULT CHARSET UTF8;

3 python端配置

3.1 python代码思路

① 先用正则表达式对测试文本数据customer.txt清洗;

② 将清洗的结果保存为customer.csv;

③ Pandas读取customer.csv文件得到数据帧df;

④ 创建mysql数据引擎并将数据帧df写入到数据库mydatabase中保存为表customer

3.2 python代码源码

函数参数:

① tablename:文本文件名→mysql数据表名

② date_times:数据中需要转换为日期类型的数据对应的字段名列表。

注意事项:

确保26行的charset值与2.3看到的变量character_set_connection对应的编码值一致。

import re

import pandas as pd
from sqlalchemy import create_engine # 准备数据
def ready_datas(tablename:str,date_times:[str]=''):
# 处理文本数据
with open("./datas/{}.txt".format(tablename), "r", encoding="utf-8") as file:
text = file.read()
text = re.sub(r"[ ]*[\|][ ]*", ",", text)
text = text.split('\n')[1]+'\n'+'\n'.join(text.split('\n')[3:-1])
text = text.replace(",\n,", "\n")[1:-1]
# 转换为csv文件
with open("./datas/{}.csv".format(tablename), "w", encoding="utf-8") as file:
file.write(text)
# 转换为datafram数据
df = pd.read_csv("./datas/{}.csv".format(tablename),encoding='utf-8')
print('dataframe {}:success'.format(tablename))
# 数据覆盖写入mysql
if date_times != '':
for date_time in date_times:
df = df.astype({date_time:"datetime64[ns]"})
# df[date_time] = pd.to_datetime(df[date_time])
# print(df.dtypes)
engine = create_engine('mysql+pymysql://root:123456@localhost/mydatabase?charset=GBK')
df.to_sql(name='{}'.format(tablename),index=None,con=engine,if_exists='replace')
print('table {}:success'.format(tablename))
return df
customer = ready_datas('customer',date_times=['visited_on'])

代码运行前如图所示,datas文件夹中仅有customer.txt文件。

代码运行后如图所示,datas文件夹下生成一个customer.csv的文件。

4 结果验证

打开mysql并连接创建好的数据库mydatabase。

mysql -h 127.0.0.1 -P 3306 -u root -p"123456" mydatabase;

使用mysql的dql语句查看生成的数据表customer的数据与表格文件customer.csv的数据是否一致。

select * from customer limit 3;



查看结果表明数据确实一致。

将mysql的输出文本写回mysql的更多相关文章

  1. 使用log4net 日志输出到数据库MySQL

    使用Log4Net的输出日志到MySQL 使用步骤如下: 1. 添加引用Log4Net.dll, mysql.data.dll到工程中 note: mysql.data.dll 版本要高,最好到mys ...

  2. 转】MySQL客户端输出窗口显示中文乱码问题解决办法

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4008095.html 感谢! 最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显 ...

  3. Mysql:输出到文件

    mysql>tee /home/a.txt mysql>show processlist; mysql>exit tee命令能重定向输出,同时屏幕会同步显示.

  4. MySQL客户端输出窗口显示中文乱码问题解决办法

    最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示:

  5. MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项

    以下的文章主要介绍的是MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项是值得我们大家注意的,我们大家可能不知道过多的对索引进行使用将会造成滥用.因此MySQL索引也会有它的缺点: 虽然索引 ...

  6. mysql进阶(二十二)MySQL错误之Incorrect string value: '\xE7\x81\xAB\xE7\x8B\x90...中文字符输入错误

    MySQL错误之Incorrect string value: '\xE7\x81\xAB\xE7\x8B\x90...' for column 'tout' at row 1中文字符输入错误 在实验 ...

  7. mysql必知必会--MySQL简介

    什么是MySQL MySQL已经存在很久了,它在世界范围内得到了广泛的安装和使用. 为什么有那么多的公司和开发人员使用MySQL?以下列出其原因. 成本--MySQL是开放源代码的,一般可以免费使用( ...

  8. ubuntu下mysql的常用命令,MySQL数据库的基本操作命令

    一.mysql服务操作 0.查看数据库版本 sql-> status; 1.net start mysql //启动mysql服务 2.net stop mysql //停止mysql服务  3 ...

  9. MySQL优化技巧之五(mysql查询性能优化)

    对于高性能数据库操作,只靠设计最优的库表结构.建立最好的索引是不够的,还需要合理的设计查询.如果查询写得很糟糕,即使库表结构再合理.索引再合适,也无法实现高性能.查询优化.索引优化.库表结构优化需要齐 ...

  10. 开启Mysql慢查询来优化mysql

    开启Mysql慢查询来优化mysql 优化sql语句是优化数据库的一个很重要的方面,那么怎么发现那些耗时耗资源的sql语句呢,开启Mysql慢查询! 1.查看是否开启慢查询,默认情况下是关闭的.你的m ...

随机推荐

  1. Spring面试攻略:如何展现你对Spring的深入理解

    什么是Spring?谈谈你对IOC和AOP的理解. Spring是一种Java开发框架,旨在简化企业级应用程序的开发和部署.它具有以下优点: 对象托管:Spring能够管理和赋值所有对象,使开发人员不 ...

  2. 带你上手基于Pytorch和Transformers的中文NLP训练框架

    本文分享自华为云社区<全套解决方案:基于pytorch.transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据>,作者: 汀丶 . 1.简介 目标: ...

  3. shiro框架基本概念介绍

    什么是Shiro: Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证.授权.加密和会话管理 Shiro的核心功能包括: 身份验证(Authentication):验证用户的身份,确保用户 ...

  4. pytest-xdist分布式测试原理浅析

    pytest-xdist执行流程: 解析命令行参数:pytest-xdist 会解析命令行参数,获取用户指定的分发模式.进程数.主机列表等信息. 加载测试用例:pytest-xdist 会加载所有的 ...

  5. 微服务下使用maven做多环境配置

    分享技术,用心生活 前言:很多项目在开发,提测,上线时都会提前手动改一些配置文件来适应对应环境,麻烦不说了,而且也容易出错:生产环境的配置也容易暴露.基于此,我们基于spring cloud alib ...

  6. 使用API数据接口获取商品详情数据的流程

    API数据接口是开发者获取第三方平台数据的一种方式,使用API接口可以快速地获取海量的商品详情数据,相比其他方式更加高效.实时.下面将介绍使用API数据接口获取商品详情数据的主要流程和步骤: 申请AP ...

  7. WPF学习 - 动画基础(1)

    1. WPF中的动画(Animation),是一种属性动画.技术上来说,它是让属性从一个值,变化到另一个值的过程.因此,有两条重要的特性: 1.1 只能为依赖属性应用动画(因为第二条特性). 1.2 ...

  8. spark修改控制台输出日志级别

    spark修改控制台输出日志级别 修改conf/log4j.properties cd $SPARK_HOME/conf cp log4j.properties.template ./log4j.pr ...

  9. POWERBI_1分钟学会_连续上升或下降指标监控

    一:数据源 模拟数据为三款奶茶销量的日销售数据源,日期是23.8.24-23.8.31.A产品为连续7天,日环比下降,B产品为连续3天,日环比下降,C产品为连续2天,日环比下降. 二:建立基础度量值 ...

  10. linux常见命令(五)

    用于文本内容处理的相关命令 sort uniq cut comm diff sort:对文件中数据进行排序,并将结果显示在标准输出上 命令语法:sort [选项] [文件] 选项 选项含义 -m 如果 ...