小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

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

Java,java,数据库,redis 额外说明

收录于:23天前

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操作。

由于编辑器存储的值是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中。

. . .

相关推荐

额外说明

atomikos JTA/XA全局事务

文章转载于:      Atomikos公司官方网址为:https://www.atomikos.com/。其旗下最著名的产品就是事务管理器。产品分两个版本: TransactionEssentials:开源的免费产品 ExtremeTransactio

额外说明

在Java循环中删除List中元素的正确方法

前言: 最近整理笔记时,发现有几个有意思的常犯错误,在此分享下。 问题:如何批量删除List中的元素呢? 比如:List大小为100,只删除前50个,怎么办? 一.通过for循环删除(错误) List<Integer> list = new ArrayL

额外说明

自学两个月,我是怎么从0基础到拿到7个offer的

1、整理好自己的仪表。 先去理个发,让自己看起来精神一点,尤其是男生,整理头发,修修鬓角能够快速让人对自己建立一个较好的印象。 出门前女生化点淡妆,男生也可以抹点霜或者身体乳之类的,不要信男生用化妆品会很娘的那一套,一个浑身汗味的男生和一个散发淡淡香味的

额外说明

Unity-Android: Can't create handler inside thread that has not called Looper.prepare()

在做unity-android的过程中,遇到这个错误: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

额外说明

手动创建一个dubbo框架,整合springboot(亲手搭建)

先看看这张图热热身: ok:开始咯… 首先创建如图这个几个项目 然后在父级的pom中提供一个父级依赖: <parent> <groupId>org.springframework.boot</groupId> <a

额外说明

This package has been deprecated和node-sass安装报错node-sass@4.9.0 postinstall: node scripts/build.js问题

前言:大概在19年4月份接触ionic做过简单的手机APP,近期再去打开该项目的时候错误百出,根本打不开,后来才知道官方弃用了一些软件包,也是百般搜索解决方案最终解决了,下面总结一下 好久没写博客了 This package has been depre

额外说明

IE 中开发,兼容与性能测试工具汇总

前言 对于开发者来说, IE的兼容性是最让人头疼的。 因为是微软的产品, 且绑定在操作系统上, 所以IE的占用率还是相当大, 对于开发者来说, 这部分的兼容的考虑就不可避免了。 对于IE 的各版本来说 从 IE7 到 IE8 之间的差异是比较大的。 IE

额外说明

【xshell】linux:CentOS 7 安装部署 nginx

目录 一、安装前确认linux下这些库已经安装 二、Nginx依赖包下载和安装-zlib 三、Nginx依赖包下载和安装-pcre库 四、Nginx依赖包下载和安装-SSL库 五、官网下载nginx 六、安装nginx 一、安装前确认linux下这些库已

额外说明

Centos7配置Jenkins

Centos7配置Jenkins jdk-11.0.16 rpm 百度云:https://pan.baidu.com/s/173k9q9MqpQrxGRs6Mig1MQ 提取码: tgrq jdk-11.0.16 tar.gz 百度云:https://p

额外说明

解决Windows提示缺少mfc120deu.dll问题

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个mfc120deu.dll文件进行安装(前提是找到适合的版本)

ads via 小工具