当前位置: 首页 > news >正文

【sql/python】表中某列值以列表聚合

需求背景:
有一个表含有两个字段
“ID”,“VALUE”
1,香蕉
1,苹果
2,橘子
3,香蕉
3,苹果
3,橘子
目标要求:将每个ID的VALUE列聚合成一个字符串列表
“ID”,“VALUE”
1,[香蕉,苹果]
2,[橘子]
3,[香蕉,苹果,橘子]

一、SQL使用 LISTAGG函数聚合方式

---将使用了LISTAGG函数来将每个ID的VALUE列聚合成一个字符串列表,列表中的元素按VALUE字段的顺序排序。
SELECT ID, LISTAGG(VALUE, ',') WITHIN GROUP (ORDER BY VALUE) AS VALUE_LIST
FROM  XXX表名
GROUP BY ID

关于排序的逻辑,想了解的见下回答
在这里插入图片描述

二、python连接远程数据库的方式,结果以JSON文件存在本地

也可以在pycharm客户端使用其他工具(如Python、JSON库等)来聚合数据并生成JSON,将数据导出到外部文件,然后给出代码如下:

import cx_Oracle
# 连接到Oracle数据库
dsn = cx_Oracle.makedsn('YOUR_HOST', 'YOUR_PORT', service_name='YOUR_SERVICE_NAME')
conn = cx_Oracle.connect(user='YOUR_USERNAME', password='YOUR_PASSWORD', dsn=dsn)
# 查询SQL
query = "select {number_column}, {value_column} FROM {table_name} where rownum<=5"
# 执行查询
cursor = conn.cursor()
cursor.execute(query)# 初始化一个字典来聚合同一ID的所有VALUE
id_value_map = {}
# 遍历查询结果并填充字典
for row in cursor:# print(row)id, value = rowif id in id_value_map:id_value_map[id].append(value)#同一个ID的VALUE值追加else:id_value_map[id] = [value]# 转换为所需的JSON格式
json_data = [{"ID": k, "VALUE": v} for k, v in id_value_map.items()]
# 写入JSON文件
with open('output.json', 'w', encoding='utf-8') as json_file:json.dump(json_data, json_file, ensure_ascii=False, indent=4)
# 关闭数据库连接
cursor.close()
conn.close()

注意:表是普表,以上两种方法这么执行没有问题!但是,如果表中含有LOB类型字段(large object),即超长文本字段,方法一 二 就会报错 !!! 如果遇到“目标缓冲区太小,无法容纳字符集转换之后的 CLOB 数据”的错误,这通常意味着在执行LISTAGG函数时,生成的CLOB数据超出了数据库允许的缓冲区大小。

我们可以通过优化方法二中的部分代码来解决这个问题:

import cx_Oracle
# 连接到Oracle数据库
dsn = cx_Oracle.makedsn('YOUR_HOST', 'YOUR_PORT', service_name='YOUR_SERVICE_NAME')
conn = cx_Oracle.connect(user='YOUR_USERNAME', password='YOUR_PASSWORD', dsn=dsn)
# 查询SQL
query = "select {number_column}, {value_column} FROM {table_name} where rownum<=5"
# 执行查询
cursor = conn.cursor()
cursor.execute(query)# 初始化一个字典来聚合同一ID的所有VALUE
id_value_map = {}
# 遍历查询结果并填充字典
for row in cursor:# print(row)id, lob_value = row# 假设我们想要读取整个LOB数据if lob_value is not None:#lob_value中存在空值,如果没有不需要加这个判断#使用lob_value.read()来读取LOB对象中的全部数据lob_value_str = lob_value.read()if id in id_value_map:id_value_map[id].append(lob_value_str)else:id_value_map[id] = [lob_value_str]# 转换为所需的JSON格式
json_data = [{"ID": k, "NOTE": v} for k, v in id_value_map.items()]
# 写入JSON文件
with open('output_note_ydy.json', 'w', encoding='utf-8') as json_file:json.dump(json_data, json_file, ensure_ascii=False, indent=4)
# 关闭数据库连接
cursor.close()
conn.close()

if lob_value is not None:
因为我的表中lob_value中存在空值,所以需要加这个判断,不然就会报如下错误。
在这里插入图片描述

相关文章:

【sql/python】表中某列值以列表聚合

需求背景&#xff1a; 有一个表含有两个字段 “ID”,“VALUE” 1,香蕉 1,苹果 2,橘子 3,香蕉 3,苹果 3,橘子 目标要求&#xff1a;将每个ID的VALUE列聚合成一个字符串列表 “ID”,“VALUE” 1,[香蕉,苹果] 2,[橘子] 3,[香蕉,苹果,橘子] 一、SQL使用 LISTAGG函数聚合方式 ---将…...

大模型实战营Day6 作业

基础作业 使用 OpenCompass 评测 InternLM2-Chat-7B 模型在 C-Eval 数据集上的性能 环境配置 conda create --name opencompass --clone/root/share/conda_envs/internlm-base source activate opencompass git clone https://github.com/open-compass/opencompass cd openco…...

C#,入门教程(20)——列表(List)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(19)——循环语句&#xff08;for&#xff0c;while&#xff0c;foreach&#xff09;的基础知识https://blog.csdn.net/beijinghorn/article/details/124060844 List顾名思义就是数据列表&#xff0c;区别于数据数组&#xff08;arr…...

【蓝桥杯日记】复盘篇一:深入浅出顺序结构

&#x1f680;前言 本期是一篇关于顺序结构的题目的复盘,通过复盘基础知识&#xff0c;进而把基础知识学习牢固&#xff01;通过例题而进行复习基础知识。 &#x1f6a9;目录 前言 1.字符三角形 分析&#xff1a; 知识点&#xff1a; 代码如下 2. 字母转换 题目分析: 知…...

尚无忧【无人共享空间 saas 系统源码】无人共享棋牌室系统源码共享自习室系统源码,共享茶室系统源码

可saas多开&#xff0c;非常方便&#xff0c;大大降低了上线成本 UNIAPPthinkphpmysql 独立开源&#xff01; 1、定位功能&#xff1a;可定位附近是否有店 2、能通过关键字搜索现有的店铺 3、个性轮播图展示&#xff0c;系统公告消息提醒 4、个性化功能展示&#xff0c;智能…...

SQL Server 恢复软件

Datanumen SQL Server 软件主要特点 支持 Microsoft SQL Server 2005、2008、2008 R2、2012、2014、2016、2017、2019、2022 。 恢复表中的架构/结构和数据。 恢复所有数据类型&#xff0c;包括 ASCII 和 Unicode XML 数据类型。 恢复稀疏列。 恢复数据库表中已删除的记录…...

奇安信天擎 rptsvr 任意文件上传漏洞复现

0x01 产品简介 奇安信天擎是奇安信集团旗下一款致力于一体化终端安全解决方案的终端安全管理系统(简称“天擎”)产品。通过“体系化防御、数字化运营”方法,帮助政企客户准确识别、保护和监管终端,并确保这些终端在任何时候都能可信、安全、合规地访问数据和业务。天擎基于…...

Linux-nginx(安装配置nginx、配置反向代理、Nginx配置负载均衡、动静分离)

关于代理 正向代理: 客户明确知道自己访问的网站是什么 隐藏客户端的信息 目录 关于代理 一、Nginx的安装与配置 1、安装依赖 2、安装nginx &#xff08;1&#xff09;上传压缩包到目录 /usr/nginx里面 &#xff08;2&#xff09;解压文件 &#xff08;3&#xff09…...

阿里云GPU服务器ECS实例规格详细说明

阿里云GPU服务器提供GPU加速计算能力&#xff0c;GPU卡支持A100、V100、T4、P4、P100、A10等&#xff0c;NVIDIA V100&#xff0c;GPU实例规格是什么意思&#xff1f;如搭载NVIDIA V100的ecs.gn6v-c8g1.2xlarge、A10卡ecs.gn7i-c32g1.8xlarge、T4卡ecs.gn6i-c4g1.xlarge、P4卡e…...

Kafka为什么在消息积压时不能直接通过消费者水平扩容来提升消费速度?

我们知道当消息生产者生产的速度快于消费者的消费速度时&#xff0c;会产生大量的消息积压&#xff0c;大多数人的想法是增加消费者的数量来提升消费速度&#xff0c;这个想法在RocketMQ中是可行的&#xff0c;但是在Kafka中不一定可行。为了更方便地分析问题&#xff0c;我们先…...

“揭秘Maven:如何成为大数据项目的管理能手?“

介绍&#xff1a;Maven是一个项目管理和构建自动化工具&#xff0c;广泛应用于Java项目中。具体来说&#xff1a;项目对象模型&#xff08;POM&#xff09;&#xff1a;Maven通过一个名为POM的模型来描述项目信息&#xff0c;包括项目的坐标、依赖关系、插件目标等。这个模型通…...

基于BERT对中文邮件内容分类

用BERT做中文邮件内容分类 项目背景与意义项目思路数据集介绍环境配置数据加载与预处理自定义数据集模型训练加载BERT预训练模型开始训练 预测效果 项目背景与意义 本文是《用BERT做中文邮件内容分类》系列的第二篇&#xff0c;该系列项目持续更新中。系列的起源是《使用Paddl…...

【EFCore仓储模式】介绍一个EFCore的Repository实现

阅读本文你的收获 了解仓储模式及泛型仓储的优点学会封装泛型仓储的一般设计思路学习在ASP.NET Core WebAPI项目中使用EntityFrameworkCore.Data.Repository 本文中的案例是微软EntityFrameworkCore的一个仓储模式实现&#xff0c;这个仓储库不是我自己写的&#xff0c;而是使…...

oracle篇—19c新特性自动索引介绍

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…...

稳定性——JE流程

1. RuntimeInit.commonInit() 上层应用都是由Zygote fork孵化出来的&#xff0c;分为system_server进程和普通应用进程进程创建之初会设置未捕获异常的处理器&#xff0c;当系统抛出未捕获的异常时候都会交给异常处理器RuntimeInit.java的commonInit方法设置UncaughtHandler …...

【控制篇 / 分流】(7.4) ❀ 03. 对国内和国际IP网段访问进行分流 ❀ FortiGate 防火墙

【简介】公司有两条宽带用来上网&#xff0c;一条电信&#xff0c;一条IPLS国际专线&#xff0c;由于IPLS仅有2M&#xff0c;且价格昂贵&#xff0c;领导要求&#xff0c;访问国内IP走电信&#xff0c;国际IP走IPLS&#xff0c;那么应该怎么做&#xff1f; 国内IP地址组 我们已…...

01-开始Rust之旅

上一篇&#xff1a;00-Rust前言 1. 下载Rust 官方推荐使用 rustup 下载 Rust&#xff0c;这是一个管理 Rust 版本和相关工具的命令行工具。下载时需要连接互联网。 这边提供了离线安装版本。本人学习的机器环境为&#xff1a; ubuntu x86_64&#xff0c;因此选用第②个工具链&a…...

华南理工大学数字信号处理实验实验一(薛y老师版本)matlab源码

一、实验目的 1、加深对离散信号频谱分析的理解&#xff1b; 2、分析不同加窗长度对信号频谱的影响&#xff1b; 3、理解频率分辨率的概念&#xff0c;并分析其对频谱的 影响&#xff1b; 4、窗长和补零对DFT的影响 实验源码&#xff1a; 第一题&#xff1a; % 定义离散信…...

一篇文章看懂云渲染,云渲染是什么?云渲染如何计费?云渲染怎么选择

云渲染是近年兴起的新行业&#xff0c;很多初学者对它不是很了解&#xff0c;云渲染是什么&#xff1f;为什么要选择云渲染&#xff1f;它是如何计费的又怎么选择&#xff1f;这篇文章我们就带大家了解下吧。 云渲染是什么 云渲染简单来说就是把本地的渲染工作迁移到云端进行的…...

C++进阶--哈希表模拟实现unordered_set和unordered_map

哈希表模拟实现unordered_set和unordered_map 一、定义哈希表的结点结构二、定义哈希表的迭代器三、定义哈希表的结构3.1 begin()和end()的实现3.2 默认成员函数的实现3.2.1 构造函数的实现3.2.2 拷贝构造函数的实现&#xff08;深拷贝&#xff09;3.2.3 赋值运算符重载函数的实…...

开源小模型怎么选?Qwen1.5-0.5B-Chat轻量化优势解析

开源小模型怎么选&#xff1f;Qwen1.5-0.5B-Chat轻量化优势解析 1. 为什么需要轻量级小模型&#xff1f; 当我们谈论AI大模型时&#xff0c;很多人首先想到的是那些需要高端GPU、动辄几十GB内存的庞然大物。但在实际应用中&#xff0c;特别是个人开发者、中小企业或者教育场景…...

Qwen Pixel Art应用场景:独立音乐人专辑封面像素化视觉系统定制部署

Qwen Pixel Art应用场景&#xff1a;独立音乐人专辑封面像素化视觉系统定制部署 1. 项目背景与价值 独立音乐人常常面临专辑封面设计的挑战&#xff1a;专业设计成本高、风格匹配难、制作周期长。Qwen Pixel Art解决方案基于Qwen-Image-2512大模型与Pixel Art LoRA微调技术&a…...

C++ STL 容器内存管理机制

C STL容器内存管理探秘 在C开发中&#xff0c;STL&#xff08;标准模板库&#xff09;容器是高效数据处理的基石&#xff0c;其背后的内存管理机制直接影响程序性能与资源利用率。理解容器如何动态分配、释放内存&#xff0c;不仅能避免内存泄漏和碎片化问题&#xff0c;还能优…...

【C++ 面试突击 · 05】大厂高频面试题:从内联函数到内存管理全梳理

目录 一、什么是inline函数&#xff1f; 二、inline函数的优缺点&#xff1f; 三、inline和宏定义的比较&#xff1f; 四、虚函数&#xff08;virtual&#xff09;可以是内联函数&#xff08;inline&#xff09;吗&#xff1f; 五、C中struct和class的区别&#xff1f; 六…...

VGG‘文艺复兴’背后的思考:从RepVGG看AI模型设计的‘简’与‘繁’哲学

VGG式架构的当代启示&#xff1a;当模型设计遇见"大道至简"的智慧 在深度学习模型架构的演进历程中&#xff0c;我们见证了一场耐人寻味的"轮回"——从早期VGG的极简主义&#xff0c;到Inception、ResNet等复杂多分支结构的盛行&#xff0c;再到如今RepVGG…...

如何专业掌握小熊猫Dev-C++现代化开发:解锁10个高效编程技巧

如何专业掌握小熊猫Dev-C现代化开发&#xff1a;解锁10个高效编程技巧 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 小熊猫Dev-C作为一款深度优化的现代化C/C集成开发环境&#xff0c;为编程学习者和专业…...

如何快速掌握B站视频下载:DownKyi面向新手的终极教程

如何快速掌握B站视频下载&#xff1a;DownKyi面向新手的终极教程 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#x…...

FPGA分频器避坑指南:为什么你的奇数倍分频时钟占空比总不对?

FPGA奇数倍分频器设计避坑实战&#xff1a;从原理到调试的完整解决方案 在FPGA开发中&#xff0c;时钟分频是最基础却又最容易出问题的环节之一。特别是当我们需要奇数倍分频时&#xff0c;很多工程师都会遇到一个共同的困扰——为什么仿真通过的代码&#xff0c;烧写到FPGA后输…...

如何快速优化Windows性能:Atlas OS完整安装与配置指南

如何快速优化Windows性能&#xff1a;Atlas OS完整安装与配置指南 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas…...

如何快速实现Figma中文界面:设计师必备的免费本地化插件

如何快速实现Figma中文界面&#xff1a;设计师必备的免费本地化插件 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾因Figma的英文界面而感到困扰&#xff1f;想要专注于设计创…...