将CSV、Excel、XML文件转换为MySQL数据库

news2024/10/6 22:26:33

在平时的工作中,经常会遇到需要将文件数据导入到数据库中的情况。有些客户之前可能只使用Excel表格作为记录工具,但当数据量达到一定程度或者需要将数据导入到其他系统中时,就会很emo,因为Excel表格虽然方便,但在数据处理和管理方面却存在很多限制。此时就需要将Excel表格中的数据导入到MySQL数据库中,以便更好地管理和利用这些数据。除了Excel表格,有时还需要处理CSV或XML格式的数据,比如某些数据源或第三方平台获取的数据可能就是这两种格式,我遇到过某设备导出的数据为欧洲千分位CSV的格式,用户自己处理起来就更emo了。

给MySQL数据库读取文件赋权

在进行转换前需要先给MySQL数据库赋权,因为MySQL服务器通常配置了一个安全选项,限制了LOAD DATA INFILE语句可以加载文件的目录。这个--secure-file-priv选项就是用于限制LOAD DATA INFILESELECT ... INTO OUTFILE操作可以访问的文件目录。
赋权需要先输入命令查看--secure-file-priv指定的目录路径,随后使用cp命令将要转换的CSV、Excel(需要转化为CSV文件)文件移动到这个路径下:

SHOW VARIABLES LIKE 'secure_file_priv';

在这里插入图片描述
复制文件到查询到的/var/lib/mysql-files/文件夹里(Amazon Dataset.csv是我从kaggle上下载的CSV文件名称):

sudo cp "/数据文件存放的路径/Amazon Dataset.csv" "/var/lib/mysql-files/"

赋予MySQL读取文件的权利:

sudo chown mysql:mysql "/var/lib/mysql-files/Amazon Dataset.csv"
sudo chmod 640 "/var/lib/mysql-files/Amazon Dataset.csv"

重启MySQL服务器:

sudo systemctl restart mysql

CSV文件转换

接下来就可以创建MySQL数据库了,根据原数据格式来建立
原CSV文件格式

CREATE DATABASE amazon;  
USE amazon;

CREATE TABLE IF NOT EXISTS daily_prices (  
    Date DATE PRIMARY KEY,  
    Open FLOAT,  
    High FLOAT,  
    Low FLOAT,  
    Close FLOAT,  
    Adj_Close FLOAT,  
    Volume BIGINT  
);

接下来进行数据读取和转换:CSV文件以 , 作为分割,所以使用FIELDS TERMINATED BY ','提示数据库原文件是,分割格式,ENCLOSED BY '"'指定每个字段的值都应该在双引号内,LINES TERMINATED BY '\n'指定每条记录之间的分隔符是换行符(\n),IGNORE 1 ROWS;指定指定导入数据时忽略文件的第一行。

LOAD DATA INFILE '/var/lib/mysql-files/Amazon Dataset.csv'  
INTO TABLE daily_prices  
FIELDS TERMINATED BY ','  
ENCLOSED BY '"'  
LINES TERMINATED BY '\n'  
IGNORE 1 ROWS;

查询下数据库是否转换成功:

SELECT * FROM daily_prices;

在这里插入图片描述

Excel文件转换

安装gnumeric将xls或xlsx文件转换为.csv文件

udo apt-get install gnumeric

安装完gnumeric后,使用ssconvert命令来将.xls文件转换为.csv文件:

ssconvert 数据.xls 数据.csv

随后既可以像操作CSV文件一样进行操作。

XML文件转换

我从国家数据官网下载的XML格式数据,官网链接:国家数据官网,在下载完数据后先看一下数据结构
在这里插入图片描述
根据数据结构来建立一个数据库:

CREATE DATABASE month_data;  
USE month_data;  
  
CREATE TABLE monthly (  
    id INT AUTO_INCREMENT PRIMARY KEY,  
    indicator VARCHAR(255),  
    time VARCHAR(255),  
    data DECIMAL(10, 2)  
);

接下来编写Python脚本,需要提前下载lxml库lxml库相对于xml库更灵活方便,处理编码方式效果更好:

# import_xml.py
from lxml import etree 
import mysql.connector  
  
conn = mysql.connector.connect(  
    host='主机名',  
    user='用户名',  
    password='用户密码',  
    database='database的名字'  
)  
cursor = conn.cursor()  
tree = etree.parse('network.xml')  
root = tree.getroot() 
  
for record in root.findall('data/record'):  
    indicator = record.find('field[@name="指标"]').text  
    time = record.find('field[@name="时间"]').text  
    data = record.find('field[@name="数据"]').text  
      
    cursor.execute(  
        "INSERT INTO monthly (indicator, time, data) VALUES (%s, %s, %s)",  
        (indicator, time, data)  
    )  
  
conn.commit()  
cursor.close()  
conn.close()

随后在终端运行它:

python3 import_xml.py

运行成功后查询一下:

SELECT * FROM monthly;

转换成功!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1875042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ORB-SLAM2同OpenMVS实现三维重建

ORB-SLAM2 位姿导出 Note: 为与OpenMVS进行对接本次进对ORB-SLAM2进行部分修改,使之可以为 OpenMVS提供稀疏点云、关键帧的位姿、内参,以及稀疏点云在各个View 中的可见性。 主要更改如下 . 在Map文件下增添如下函数 public: void Save(const string &a…

面包板的使用

概要 当你学习怎样去建立一个电路时,面包板是最基本、最简单的元件之一。由于板子上有很多小插孔,各种电子元器件可根据需要任意插入或拔出,免去了焊接的工序,节省了电路的组装时间,且元件可以重复使用,非…

论文学习:基于知识图谱的RAG进行客服问答

1.简介 文章名称: Retrieval-Augmented Generation with Knowledge Graphs for Customer Service Question Answering(基于知识图谱的RAG进行客服问答) 2.摘要ABSTRACT 在客户服务技术支持中,迅速准确地检索相关的过往问题对于有…

爬虫笔记17——selenium框架的使用

selenium框架的使用 1、python程序安装selenium框架2、下载Chrome谷歌驱动3、selenium的基本使用4、多个标签页切换顺序混乱的问题 1、python程序安装selenium框架 # 在安装过程中最好限定框架版本为4.9.1 # pip install selenium 没有制定版本,非镜像下载也会比较…

node.js环境安装和VUE-cli脚手架搭建

简介 node.js Node.js 是一个免费、开源、跨平台的 JavaScript 运行时环境,它让开发人员能够创建服务器、Web 应用、命令行工具和脚本。 VUE-cli Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 vue/cli 实现的交互式的项…

「C++系列」C++简介、应用领域

文章目录 一、C简介C 的主要特点:C 的学习建议: 二、C 应用领域三、C 有哪些优势四、C 初学案例1. Hello, World!2. 两数求和3. 判断奇偶4. 判断闰年5. 判断质数6. 求阶乘7. 斐波那契数列8. 延时程序(简单示例) 五、相关链接 一、…

xlsx插件简介

1. xlsx插件 1.1. 常用属性和方法 1.1.1. 创建新的工作簿1.1.2. 从数组生成工作表1.1.3. 添加工作表到工作簿1.1.4. 从HTML表格创建工作表1.1.5. 读取Excel文件1.1.6. 导出Excel文件1.1.7. 设置单元格样式 2. vue中如何使用xlsx 2.1. vue-xlsx的特点2.2. 常用属性和方法 2.2.1…

企业级堡垒机JumpServer

文章目录 JumpServer是什么生产应用场景 Docker安装JumpServer1.Docker安装2.MySQL服务安装3.Redis服务安装4.key生成5.JumpServer安装6.登录验证 系统设置邮箱服务器用户和用户组创建系统审计员资产管理用户创建资产节点资产授权查看用户的资产监控仪表盘 命令过滤器创建命令过…

基于STM32的智能家用电力管理系统

目录 引言环境准备智能家用电力管理系统基础代码实现:实现智能家用电力管理系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景:电力管理与优化问题解决方案与优化收尾与总结 1. 引言 智能家用电力管理系统通…

EXCEL 复制后转置粘贴

nodepad 转置参考: https://editor.csdn.net/md/?articleId140014651 1. WPS复制后转置粘贴 复制-》右键-》顶部第一行-》粘贴行列转置,如下图: 2. Excel office365 本地版 2. Excel office365 在线版

Python特征工程 — 1.1 特征二值化

目录 1 特征二值化 1.1 特征二值化简介 1.2 实验数据集 2 阈值法 2.1 scikit-learn库实现阈值法二值化 2.2 pandas实现阈值法二值化 2.3 自定义函数实现阈值法二值化 3 其他方法实现二值化 3.1 中位数法 3.2 众数法 3.3 标准差法 1 特征二值化 1.1 特征二值化简介…

国产操作系统上netstat命令详解 _ 统信 _ 麒麟 _ 中科方德

原文链接:国产操作系统上netstat命令详解 | 统信 | 麒麟 | 中科方德 Hello,大家好啊!今天给大家带来一篇在国产操作系统上使用netstat命令的详解文章。netstat是网络统计(network statistics)的缩写,它是一…

力扣每日一题 6/28 动态规划/数组

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2742.给墙壁刷油漆【困难】 题目: 给你两个长度为 n 下标从 0…

Hive SQL:实现炸列(列转行)以及逆操作(行转列)

目录 列转行行转列 列转行 函数: EXPLODE(ARRAY):将ARRAY中的每一元素转换为每一行 EXPLODE(MAP):将MAP中的每个键值对转换为两行,其中一行数据包含键,另一行数据包含值 数据样例: 1、将每天的课程&#…

vue全局方法plugins/utils

一、在src目录下创建一个plugins文件夹 test.ts文件存放创建的方法,index.ts用于接收所有自定义方法进行统一处理 二、编写自定义方法 // test.ts文件 export default {handleTest(val1: number, val2: number) {// 只是一个求和的方法return val1 val2;}, };三…

hive调优原理详解:案例解析参数配置(第17天)

系列文章目录 一、Hive常问面试函数(掌握) 二、Hive调优如何配置(重点) 文章目录 系列文章目录前言一、Hive函数(掌握)11、JSON数据处理12、炸裂函数13、高频面试题13.1 行转列13.2 列转行 14、开窗函数&a…

一些指标的学习

1.平均倒数排名(MRR) 1.定义 MRR 是衡量检索系统返回的结果列表中第一个相关结果位置的指标。具体来说,它是所有查询倒数排名的平均值。 2.计算步骤 对每个查询,找到第一个正确答案在结果列表中的排名 𝑅&#x1d44…

鸿蒙登录页面及页面跳转的设计

目录 任务目标任务分析任务实施1.新建工程项目HMLogin2.设计登录页面Index.visual3.设计第二个页面SecondPage4.修改Index.ets代码5.修改SecondPage.ets代码6.运行工程 任务目标 设计一个简单的登录页面,要求可以将第一页的登录信息,传递到第二个页面&a…

VMware ESXi 技术

目录 一、VMware ESXi安装 1. 在VMware WorkStation中创建一台虚拟机 2. 进入VMware ESXi控制台 3. 配置VMware ESXi网络 二、使用Web网页端登录管理ESXi 1. 分配许可证密钥(选做) 2. 管理ESXi 三、VMware ESXi控制台 1. 创建虚拟机 2. 定制虚拟…

静态链表详解(C语言版)

顺序表和链表的优缺点 顺序表和链表是两种基本的线性数据结构,它们各自有不同的优缺点,适用于不同的应用场景。 顺序表(Sequential List,通常指数组) 优点: 随机访问:可以通过索引快速访问任…