Oracle数据库将表数据转储为JSON格式文件的详细步骤

 更新时间:2025年11月20日 09:21:21   作者:岫珩  
这篇文章主要介绍了如何将Oracle数据库表数据转储为JSON格式文件的详细步骤,包括所需参数、数据库连接、数据获取和保存JSON文件等,需要的朋友可以参考下

Oracle数据库表数据转储为JSON格式文件

1. 参数

所需参数包含Oracle服务器连接参数、表名、输出文件路径

参数含义举例
host服务器ip地址如localhost、192.30.30.30
port服务器端口号默认1521
service_name服务器名称如ORACLE
username账号如oracle_un
password密码如oracle_ps
TABLE_NAME表名,即你需要将哪个表转储为json文件如tb_oracle_data
OUTPUT_FILE输出文件名,json文件的保存位置和名称如./output_data.json

2. 数据库连接

首先需要连接数据库,以下为连接数据库的代码

def connect_to_oracle(host: str, port: int, service_name: str, username: str, password: str) -> cx_Oracle.Connection:
    """
    Establish connection to Oracle database
    
    Args:
        host: Database host
        port: Database port
        service_name: Service name
        username: Database username
        password: Database password
        
    Returns:
        cx_Oracle.Connection: Database connection object
    """
    dsn = cx_Oracle.makedsn(host, port, service_name=service_name)
    connection = cx_Oracle.connect(username, password, dsn)
    return connection

3. 获取数据

获取表中的数据,通过连接参数查询表中字段和数据并整合

def fetch_data_from_table(connection: cx_Oracle.Connection, query: str) -> List[Dict[str, Any]]:
    """
    Fetch data from Oracle database using provided query
    
    Args:
        connection: Oracle database connection
        query: SQL query to execute
        
    Returns:
        List of dictionaries containing the query results
    """
    cursor = connection.cursor()
    cursor.execute(query)
    
    # Get column names
    columns = [desc[0].lower() for desc in cursor.description]
    
    # Fetch all rows
    rows = cursor.fetchall()
    
    # Convert to list of dictionaries
    result = []
    for row in rows:
        result.append(dict(zip(columns, row)))
    
    cursor.close()
    return result

4. 保存JSON

将数据保存为json格式的文件输出
这里文件名可以自定义文件路径和名称

def save_to_json(data: List[Dict[str, Any]], filename: str) -> None:
    """
    Save data to JSON file
    
    Args:
        data: Data to save
        filename: Output filename
    """
    with open(filename, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=2, default=str)
    print(f"Data saved to {filename}")

5. 完整代码

以下为完整代码

import cx_Oracle
import json
import os
from typing import List, Dict, Any

def connect_to_oracle(host: str, port: int, service_name: str, username: str, password: str) -> cx_Oracle.Connection:
    """
    Establish connection to Oracle database
    
    Args:
        host: Database host
        port: Database port
        service_name: Service name
        username: Database username
        password: Database password
        
    Returns:
        cx_Oracle.Connection: Database connection object
    """
    dsn = cx_Oracle.makedsn(host, port, service_name=service_name)
    connection = cx_Oracle.connect(username, password, dsn)
    return connection

def fetch_data_from_table(connection: cx_Oracle.Connection, query: str) -> List[Dict[str, Any]]:
    """
    Fetch data from Oracle database using provided query
    
    Args:
        connection: Oracle database connection
        query: SQL query to execute
        
    Returns:
        List of dictionaries containing the query results
    """
    cursor = connection.cursor()
    cursor.execute(query)
    
    # Get column names
    columns = [desc[0].lower() for desc in cursor.description]
    
    # Fetch all rows
    rows = cursor.fetchall()
    
    # Convert to list of dictionaries
    result = []
    for row in rows:
        result.append(dict(zip(columns, row)))
    
    cursor.close()
    return result

def save_to_json(data: List[Dict[str, Any]], filename: str) -> None:
    """
    Save data to JSON file
    
    Args:
        data: Data to save
        filename: Output filename
    """
    with open(filename, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=2, default=str)
    print(f"Data saved to {filename}")

def export_table_to_json(
    host: str, 
    port: int, 
    service_name: str, 
    username: str, 
    password: str,
    table_name: str,
    output_file: str,
    additional_conditions: str = ""
) -> None:
    """
    Export Oracle table data to JSON file
    
    Args:
        host: Database host
        port: Database port
        service_name: Service name
        username: Database username
        password: Database password
        table_name: Table name to export
        output_file: Output JSON filename
        additional_conditions: Additional WHERE conditions (optional)
    """
    try:
        # Connect to database
        connection = connect_to_oracle(host, port, service_name, username, password)
        print("Connected to Oracle database successfully")
        
        # Build query
        query = f"SELECT * FROM {table_name}"
        if additional_conditions:
            query += f" WHERE {additional_conditions}"
            
        print(f"Executing query: {query}")
        
        # Fetch data
        data = fetch_data_from_table(connection, query)
        print(f"Fetched {len(data)} records from database")
        
        # Save to JSON
        save_to_json(data, output_file)
        
        # Close connection
        connection.close()
        print("Database connection closed")
        
    except cx_Oracle.Error as e:
        print(f"Oracle error occurred: {e}")
    except Exception as e:
        print(f"An error occurred: {e}")

# Example usage
if __name__ == "__main__":
    # Database configuration - replace with your actual values
    DB_CONFIG = {
        'host': 'localhost',
        'port': 1521,
        'service_name': 'ORCL',
        'username': 'your_username',
        'password': 'your_password'
    }
    
    # Export parameters
    TABLE_NAME = 'your_table_name'
    OUTPUT_FILE = 'output_data.json'
    
    # Export data
    export_table_to_json(
        host=DB_CONFIG['host'],
        port=DB_CONFIG['port'],
        service_name=DB_CONFIG['service_name'],
        username=DB_CONFIG['username'],
        password=DB_CONFIG['password'],
        table_name=TABLE_NAME,
        output_file=OUTPUT_FILE
    )

到此这篇关于Oracle数据库将表数据转储为JSON格式文件的详细步骤的文章就介绍到这了,更多相关Oracle表数据转储为JSON文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Oracle中pivot函数图文实例详解

    Oracle中pivot函数图文实例详解

    pivot操作是一种数据处理方法,可以将一个表中的行数据转换为列数据,这种转换对于表格数据的分析和展示非常有用,下面这篇文章主要给大家介绍了关于Oracle中pivot函数的相关资料,需要的朋友可以参考下
    2023-05-05
  • 解决线上Oracle连接耗时过长的问题现象

    解决线上Oracle连接耗时过长的问题现象

    这篇文章主要介绍了记一次线上Oracle连接耗时过长的问题,本文通过问题定位分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Oracle备库宕机启动的完美解决方案

    Oracle备库宕机启动的完美解决方案

    这篇文章主要给大家介绍了关于Oracle备库宕机启动的完美解决方案,文中通过示例代码介绍的非常详细,对大家学习或者使用Oracle具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Oracle GoldenGate同步服务归档空间维护【推荐】

    Oracle GoldenGate同步服务归档空间维护【推荐】

    这篇文章主要介绍了Oracle GoldenGate同步服务归档空间维护的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • Oracle中触发器示例详解

    Oracle中触发器示例详解

    触发器是许多关系数据库系统都提供的一项技术。下面这篇文章主要给大家介绍了关于Oracle中触发器的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-09-09
  • oracle while的用法示例分享

    oracle while的用法示例分享

    Oracle with语句是经常可以见到的语句,下面就为您详细介绍Oracle with语句的用法,如果您对Oracle with语句感兴趣的话,不妨一看
    2014-03-03
  • oracle 发送邮件 实现方法

    oracle 发送邮件 实现方法

    oracle 发送邮件 实现方法
    2009-05-05
  • Oracle如何实现把B表某一字段更新到A表

    Oracle如何实现把B表某一字段更新到A表

    这篇文章主要给大家介绍了关于Oracle如何实现把B表某一字段更新到A表的相关资料,在Oracle中使用一个表的字段来更新另一个表的字段,可以采用UPDATE SELECT语句,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-07-07
  • oracle Dbeaver存储过程语法详解

    oracle Dbeaver存储过程语法详解

    这篇文章主要介绍了oracle Dbeaver存储过程语法详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • ORACLE学习笔记-添加更新数据函数篇

    ORACLE学习笔记-添加更新数据函数篇

    Oracle系统,即是以Oracle关系数据库为数据存储和管理作为构架基础,构建出的数据库管理系统。世界第一个支持SQL语言的商业数据库,定位于高端工作站,以及作为服务器的小型计算机,Oracle公司的整个产品线包括数据库服务器、企业商务应用套件、应用开发和决策支持工具
    2014-08-08

最新评论