【sql/python】以共同字段进行两表合并

这篇具有很好参考价值的文章主要介绍了【sql/python】以共同字段进行两表合并。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求背景:
数据库中有两张表,共同字段为id,想要合并为一个表,但两张表内容过大,如果使用sql语句执行会崩溃!!
目标要求:从数据库中导出为两个json文件,一个文件字段为id,value;另一个文件字段为id,note,以相同字段id进行合并,输出一个JSON包含三个字段id,value,note

# 将两个json文件以id进行合并,输出最终的目标结果
import json

with open('text_1.json', 'r',encoding='utf-8') as f:
    data1 = json.load(f)
with open('text_2.json', 'r',encoding='utf-8') as f:
    data2 = json.load(f)

# for d in data1 + data2:
#     print(d)

# #----------报错,因为部分 id在note表不存在
# # 使用id字段作为键来合并两个字典
# merged_data = {d['ID']: { 'id': d['ID'], 'value': d['VALUE'], 'note': d['NOTE'] } for d in data1 + data2}

# 合并两个字典
# 执行上述一行代码报错的话,再改为下面的代码
merged_data = {}
for item1 in data1:
    ID = item1['ID']
    merged_data[ID] = {
        'ID': ID,
        'VALUE': item1['VALUE'],
        'NOTE': None  # 默认没有note
    }
for item2 in data2:
    ID = item2['ID']
    if ID in merged_data:
        # 如果id已经在merged_data中,更新note字段
        merged_data[ID]['NOTE'] = item2['NOTE']
    else:
        # 如果id不在merged_data中,但存在于data2中,添加到merged_data
        merged_data[ID] = {
            'ID': ID,
            'VALUE': None,  # 默认没有value
            'NOTE': item2['NOTE']
        }

# 将合并后的字典转换回JSON格式
merged_json = json.dumps(merged_data, ensure_ascii=False,  indent=4)

# 将合并后的JSON输出到一个文件中
with open('merged_data.json', 'w', encoding='utf-8') as f:
    f.write(merged_json)

注意如果你的表内容不大,可以选择使用sql或者pandas中的merge进行关联合并,代码如下文章来源地址https://www.toymoban.com/news/detail-800624.html

  • sql中left join语句
SELECT a.ID, a.VALUE, n. NOTE
FROM {table_name_1} a
LEFT JOIN {table_name_2} n ON a.ID = n.ID 
WHERE a.id in (619,776,2547,12715069,13206239) 
  • python 中pd.merge
##----运行成功
import pandas as pd
import cx_Oracle as cx
from sqlalchemy import create_engine
def visitOracle(sql):
    # 数据库连接信息
    dsn_tns = cx.makedsn(('YOUR_HOST', 'YOUR_PORT', service_name='YOUR_SERVICE_NAME')
    conn = f"oracle+cx_oracle://{YOUR_USERNAME}:{YOUR_PASSWORD}@{dsn_tns}"
    # 创建数据库引擎
    engine = create_engine(conn)
    # 使用pandas的read_sql_query方法执行查询并获取结果
    df = pd.read_sql_query(sql, con=engine)
    # 关闭数据库连接
    engine.dispose()
    return df

##诊疗记录
sql1 = "select id, {value_column} FROM {table_name} where rownum<=5""
df1 = visitOracle(sql1)
print(df1)
sql2 = "select id, {value_column} FROM {table_name} where rownum<=5""
df2 = visitOracle(sql1)
print(df2)
# ----------pd合并两张表的数据
# 根据ID将两张表的数据合并
merged_df = pd.merge(df1, df2,  on='id', how='outer', suffixes=('', '_s'))
print(merged_df)

到了这里,关于【sql/python】以共同字段进行两表合并的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 三种SQL实现聚合字段合并(presto、hive、mysql)

    需求:按照项目名,以逗号合并参与人

    2024年02月16日
    浏览(45)
  • Hive sql 将多个字段组合成json格式

    新的项目中,有一个需求,前端展示一个字段中要包含多个字段,讨论后决定将多个字段转成Json类型进行展示,新字段类型为 arraydict 经历了多次试验,参考多个文章版本,终于改成了符合需求的SQL版本。 SQL代码如下: 结果展示:

    2024年02月16日
    浏览(41)
  • 如何用SQL取出字段内是json体的数据

    数据库中会遇到字段里面存的JSON结果的数据,那么如果我们想直接取到JSON里的值该怎么办呢?其实SQL自带的函数就可解决 假如现在有表TableA,其中一个字段叫info,字段内容如下: 使用JSON_EXTRACT()函数取出name的话,写法如下: 但取值有一个问题,就是取出来如果是字符串,

    2024年02月10日
    浏览(35)
  • Oracle SQL Developer 中查看表的数据和字段属性、录入数据

    在Oracle SQL Developer中,选中一个表时,右侧会列出表的情况;第一个tab是字段的名称、数据类型等属性; 切换到第二个tab,显示表的数据;   这和sql server management studio不一样的; 看一下部门表dept的数据如下;   输入语句新建一个表; 切换到新建表的数据tab, 通过点上方图

    2024年02月07日
    浏览(44)
  • 两表查询常用SQL

    1、两个表:table_a和table_b,求两表的交集,:INNER JOIN SELECT a.*,b.* FROM table_a AS a INNER JOIN table_b AS b ON a.id=b.id; 2、两个表:table_a和table_b,table_a为主表,关联查询table_b,table_b有数据就显示,没有数据就显示null,:LEFT JOIN SELECT a.*,b.* FROM table_a AS a LEFT JOIN table_b A

    2024年02月03日
    浏览(38)
  • Oracle/PL/SQL奇技淫巧之Json转表

    在Oracle中,有些时候我们需要在一个json文档中查数据 这个时候我们可以通过 JSON_TABLE 函数来把 json文档 提取成一张可以执行正常查询操作的表 先看 JSON_TABLE 函数的基础用法: 其中: json_data :要从中提取数据的 JSON文档 或 JSON列 $.json_path :JSON路径表达式,该表达式指定要提

    2024年02月12日
    浏览(42)
  • Hive SQL,使用UNION ALL 纵向合并表,当字段为空值时报错

    使用UNION ALL纵向合并表,当字段为空值时报错如下: SQL 错误 [40000] [42000]: Error while compiling statement: FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: The column KEY._col1:0._col0 is not in the vectorization context column map {KEY._col0=0, KEY._col1=1}. 说明:客户端用的 DBeaver 尝试了各种方

    2024年02月03日
    浏览(38)
  • SQL两表/多表关联查询--JOIN语句

    一、基础概念 SQL中的关联是通过JOIN实现的,JOIN有几种类型,包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN等。 二、INNER JOIN详解 INNER JOIN是最常用的关联方式之一,它 返回 两个表中共同存在的数据行 。 其语法格式如下: 下面是一个实际的例子: 以上代码可以

    2024年01月18日
    浏览(57)
  • 【MySQL】根据多个字段查询数据进行去重的sql编写

    一、实现思路 根据四个字段进行数据去重的SQL编写可以使用GROUP BY和HAVING子句来实现。 场景一: 假设有一个名为 table1 的数据表,其中包含四个字段: field1 、 field2 、 field3 和 field4 。要求根据这四个字段进行数据去重。 可以使用以下SQL语句: 场景二: 上述SQL语句会返回所

    2024年02月15日
    浏览(56)
  • SQL中的替换函数replace将字段中的匹配值进行替换

    目录 一、更新替换 二、查询替换   一、更新替换 例:将user表中的address字段中IP1替换为IP2 二、查询替换

    2024年02月16日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包