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

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。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xvwen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值