Java操作redis数据库之读取csv文件

news2024/11/18 21:39:19

csv文件

要想对某个文件进行具体操作,首先要了解这个文件的结构。csv 全称“Comma-Separated Values”,是一种逗号分隔值格式的文件,是一种用来存储数据的纯文本格式文件。CSV 文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串。它们大多使用逗号字符来分隔(或定界)数据,但有时使用其他字符,如分号等;

csv用Excel打开,解析并填充到表格
在这里插入图片描述

由于是纯文本结构就可以用txt方式打开

在这里插入图片描述

了解文件的结构后就可以读取文件并解析了。

由于是一个文件对象那么就需要用到Java IOFile对象

public class JavaReadCSV {
    public static void main(String[] args) throws IOException {
        File file = new File("D://Lession/(sample)sam_tianchi_mum_baby.csv");

        FileReader fileReader = new FileReader(file);

        BufferedReader reader = new BufferedReader(fileReader);
        

        //(进阶)分割,

        //取出表头分割
        String head[] = reader.readLine().split(",");
        //System.out.println(head);

        while(reader.readLine() !=null ){
            //System.out.println(reader.readLine());

            String[] element_list = reader.readLine().split(",");

            //String element_json = "{"+element_list[0]+","+element_list[1]+","+element_list[2]+"}";
			
			/*
			字符串的拼接逻辑
			*/

            if (reader.readLine() ==null) break;
        }
    }
}

上述代码就是读取csv文件并解析的过程,字符串拼接的逻辑自适用。可以装入java数据结构如listset,map等,也可以拼接称json字符串。

Jedis官方推荐的Java连接开发工具

如何将解析的数据存储到redis呢?和java操作mysql数据库一样,操作redis也需要工具包即相应的jar文件,该包就是 Jedis

redis是当今基本所有互联网产品都在使用的一种提供键值对形式的内存数据库。之所以说是内存数据库,是因为redis基于内存的读取和写入相比传统的数据库基于磁盘IO快上数倍。Jedis就是Redis官方推荐的Java连接开发工具。

在Java中,Redis对应于Jedis就相当于关系数据库对应于JDBC。

Java使用redis的基本步骤:

  1. 下载并导入依赖

首先你需要下载驱动包 下载 jedis.jar,确保下载最新驱动包。在你的 classpath 中包含该驱动包。

下载地址

若是基于maven需要导入依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.2.0</version>
</dependency>

maven仓库地址https://mvnrepository.com/

  1. jedis对象api
    在这里插入图片描述
    如图所示,创建jedis对象的主要参数。判断存储的value的类型选择合适的api操作。

由于小编存储的value是json字符串的类型,所以需要jedis操作字符串的api

在这里插入图片描述

图片来自淡写谢谢作者大大!

对使用jedis的api读取redis的数据:
在这里插入图片描述

import redis.clients.jedis.Jedis;

public class RedisConect {

    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.223.128",6379);

        String csvfile = jedis.get("csvfile");
        System.out.println(csvfile);
        jedis.close();
    }
}

Redis设置了密码的要给jedis配置密码,不然会报错。

在这里插入图片描述

import redis.clients.jedis.Jedis;

public class RedisConect {

    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.223.128",6379);
        //配置连接密码
        jedis.auth("root");
        String csvfile = jedis.get("csvfile");
        System.out.println(csvfile);
        jedis.close();
    }
}

在这里插入图片描述

读取到json字符串后可以使用第三方库如jackson,fastjson将其转化为json对象。

读取csv存储到redis并使用jedis操作

接上面BufferedReader读取csv文件(数据解析逻辑省略根据需要修改),还有一种方法使用python读取csv,在java中调用python代码,这样可以省略数据解析的过程。

python读取csv存储到redis:

import csv
import redis
import json

r = redis.StrictRedis(host="192.168.223.128",port=6379,password='root')

def link_redis(json_list = []):
    with open('D:\Lession\(sample)sam_tianchi_mum_baby.csv','rt',encoding="utf-8") as csvfile:
        reader = csv.DictReader(csvfile)

        for row in reader:
            id = row['user_id']
            birthday = row['birthday']
            gender = row['gender']
            #print(row)
            json_list.append(row)


if __name__ == "__main__":
    # print("Hello World")
    new_list = []
    link_redis(new_list)

    r.set('csvfile',json.dumps(new_list))
    print('存储完成!')

java调用python代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class JavaAndPython {

    public static void main(String[] args) {
        try {
            System.out.println("start");
            String[] args1 = new String[]{"python", "D://Python/PycharmProjects/helloworld/redisTest.py"};   //D://Lession/test.py
            Process pr = Runtime.getRuntime().exec(args1);

            BufferedReader in = new BufferedReader(new InputStreamReader(
                    pr.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
            in.close();
            pr.waitFor();
            System.out.println("end");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

使用Runtime.getRuntime().exec()方法加载python脚本。

通过上面方法将数据存储到redis。

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

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

相关文章

FPGA再入门——UART IP核调用

我的工作偏向硬件设计与调试&#xff0c;但是经过几年的发展&#xff0c;发觉不会调程序发展真的很受限制。最近越来越被这种限制折磨的很难受&#xff0c;所以开始学习调调程序。其实&#xff0c;本科与研究生阶段都有过做写代码的经历&#xff0c;算是入过门。但是&#xff0…

[3]ESP32连接MQTT服务端

MQTT库&#xff1a;PubSubClient 连接MQTT服务端 #include <Arduino.h> #include <WiFi.h> #include <PubSubClient.h>const char *ssid "613专属"; const char *password "613613613"; const char *mqttServer "test.ranye-…

CDGA|持续投入开展数据治理工作可以从这四大方向着手

数字化转型趋势下&#xff0c;外部监管以及内部数据使用都对数据治理提出更高效、更准确、更完备、更合规的要求&#xff0c;企业如何抓住新形势下的要求&#xff0c;开展自身数据治理工作&#xff1f; 纵观数据治理的发展历程&#xff0c;剖析数据治理的建设路径&#xff0c;持…

3. 中断向量是( )。 ————计算机组成原理

中断向量是&#xff08; &#xff09; A.子程序入口地址 B.中断向量表的首地址 C.终端服务程序入口地址 D.终端服务入口地址的地址 答案&#xff1a; C 知识点&#xff1a; 终端的概念&#xff1a; 1 机器出现了一些紧急事务&#xff0c;CPU不得不停下当前正在执行的程序&…

SQL经典练习:电脑商店

表结构 本文使用的表结构如下&#xff1a; 以下是创建表的语句&#xff1a; -- 厂商表 CREATE TABLE Manufacturers (Code INTEGER NOT NULL PRIMARY KEY, -- 编号&#xff0c;主键Name VARCHAR(255) NOT NULL, -- 名称 );-- 产品表 CREATE TABLE Products (Code INTEGER NO…

深蓝学院-多传感器融合定位课程-第10章-基于图优化的建图方法

专栏文章: 深蓝学院-多传感器融合定位课程-第1章-概述_goldqiu的博客-CSDN博客 深蓝学院-多传感器融合定位课程-第2章-3D激光里程计I_goldqiu的博客-CSDN博客 深蓝学院-多传感器融合定位课程-第3章-3D激光里程计II_goldqiu的博客-CSDN博客 深蓝学院-多传感器融合定位课程-第…

Spring动态数据源的简单理解

连接数据库时&#xff0c;需要url&#xff0c;userName&#xff0c;和password&#xff0c;怎么做到动态呢&#xff0c;那就是在使用时&#xff0c;根据你的设置&#xff0c;去连接不同的url&#xff0c;userName&#xff0c;和password&#xff0c;实现数据源的切换。 1.先写…

【JavaScript】JS飞机大战网页简易版

文章目录一、效果演示设计思路二、鼠标版飞机大战代码展示1.HTML结构代码2.CSS样式代码3.JavaScript代码js.js文件plane.js文件三、键盘版飞机大战代码展示1.HTML结构代码2.CSS样式代码3.JavaScript代码四、代码资源分享一、效果演示 利用html&#xff0c;css&#xff0c;js制…

php进程管理

PHP-FPM 先来了解一些名词概念&#xff1a; CGI是Common Gateway Interface&#xff08;通用网管协议&#xff09;&#xff0c;用于让交互程序和Web服务器通信的协议。它负责处理URL的请求&#xff0c;启动一个进程&#xff0c;将客户端发送的数据作为输入&#xff0c;由Web服…

首发!飞凌嵌入式i.MX9系列核心板重磅发布

来源&#xff1a;飞凌嵌入式官网www.forlinx.com为了让更多设备实现高能效、高安全性和智能化升级&#xff0c;NXP推出了全新的i.MX 93x系列处理器。作为NXP的重要合作伙伴&#xff0c;飞凌嵌入式在i.MX 9352的α阶段便进行该款处理器的产品研发工作。今天&#xff0c;飞凌嵌入…

HNU编译原理实验三cminus_compiler-2022-fall

前言&#xff1a;实验难度再次提升&#xff0c;不过会一个就可以做其他部分&#xff0c;很多都是相同的&#xff0c;个人认为更难的还是配置环境部分&#xff0c;真的会折磨死人 lab3 实验报告实验要求 第一部分: 了解LLVM IR。通过clang生成的.ll&#xff0c;了解LLVM IR与c代…

Windows10下CLion配置说明

Windows10下CLion配置说明 CLion 是 C/C的 IDE&#xff0c;可以配置多种编译环境&#xff0c;本文以配置MinGW编译环境为例。 安装 CLion 的安装可直接到官网下载 ZIP,文件解压后直接运行即可。我在安装过程中没有遇到困难&#xff0c;网上关于安装的教程很多&#xff0c;如…

TCP连接积压导致服务假死问题

目录 一、事故表现 二、事故问题分析 三、测试环境重现 四、解决方案 一、事故表现 2022-01-14日凌晨00:00开始&#xff0c;TCP_alloc&#xff1a;已分配TCP连接&#xff0c;一直未释放。导致未释放的 TCP连接一直积压。最终服务LOGISTICS-DS-ES-COMMON-SERVICE假死&#x…

jenkins下载安装

目录 1.下载安装 2.初始化配置 3.新建项目 3.1.安装插件 3.2.配置项目 3.2.1.选择项目类型 3.2.1.源码管理 3.3.3.配置maven 1.下载安装 安装清单&#xff1a; JDK 1.8Maven 3.6.3gitJenkins 2.334 环境&#xff1a; centos 7 Jenkins是JAVA编写的&#xff0c;需要JDK环…

年终报告:通过3个维度,回看2022全球电商市场的“多样性”

回顾年中&#xff0c;各国由于经济政策的调整导致贸易壁垒的层层叠加&#xff0c;也有非常复杂多变的因素在发酵&#xff0c;今年下半年突然爆发的俄乌两国的冲突使得原来就脆弱的全球经济再次遭受动荡&#xff0c;这一系列的动荡因素直接导致了今年全球经济的整体不景气&#…

鼠标拖拽菜单栏控制宽度大小及flex实现经典左右两栏布局

目录 1. 实现的效果如下图所示&#xff1a; 2. 思路 3.代码 3.1 js核心代码简单理解版&#xff1a; 3.2 实际应用-react版 4. 使用flex实现左右两栏式经典布局 4.1 图示&#xff1a; 4.2 代码实例&#xff1a; 1. 实现的效果如下图所示&#xff1a; 2. 思路 1. 使用定…

欧科云链接受北京电视台采访以创新科技助力《反电信网络诈骗法》

近日&#xff0c;欧科云链作为创新科技企业的代表&#xff0c;就《反电信网络诈骗法》实施的相关问题接受了来自北京电视台的采访。 编辑&#xff5c;小O 出品&#xff5c;欧科云链 近年来&#xff0c;随着数字技术的快速发展&#xff0c;越来越多的交易都转移到线上&#xff0…

softnms源码解读(python)

前言 想写这篇文章的原因是最近碰见了一个比较棘手的事情&#xff0c;如果想把一个目标检测模型及其相关的后处理移到嵌入式设备上&#xff0c;不能用c的opencv库&#xff0c;也就不能用cv2.dnn.nms这个函数来进行nms的后处理&#xff0c;需要用c实现&#xff0c;那就必须了解…

重磅综述|Nat Rev Gastroenterol Hepatol:人类胃肠道中的产甲烷古菌

期刊&#xff1a;Nat Rev Gastroenterol Hepatol 影响因子&#xff1a;73.082 发表时间&#xff1a;2022年9月 一、摘要 人类微生物群与人类健康和疾病密切相关。除了细菌、病毒和真核生物外&#xff0c;人类胃肠道中许多古菌与甲烷的产生有关&#xff0c;临床上可…

PMP一般要提前多久备考?

一般是1-3个月吧&#xff0c;PMP考试通过率至少有60%&#xff0c;报培训班可以有80%以上&#xff0c;不用备考太长时间&#xff0c;但时间太短也无法把项目管理的知识学完&#xff0c;1-3个月是最佳备考时间。 &#xff08;字数很多&#xff0c;都是干货&#xff0c;资料在文末…