Oracle數(shù)據(jù)庫(kù)將表數(shù)據(jù)轉(zhuǎn)儲(chǔ)為JSON格式文件的詳細(xì)步驟
Oracle數(shù)據(jù)庫(kù)表數(shù)據(jù)轉(zhuǎn)儲(chǔ)為JSON格式文件
1. 參數(shù)
所需參數(shù)包含Oracle服務(wù)器連接參數(shù)、表名、輸出文件路徑
| 參數(shù) | 含義 | 舉例 |
|---|---|---|
| host | 服務(wù)器ip地址 | 如localhost、192.30.30.30 |
| port | 服務(wù)器端口號(hào) | 默認(rèn)1521 |
| service_name | 服務(wù)器名稱(chēng) | 如ORACLE |
| username | 賬號(hào) | 如oracle_un |
| password | 密碼 | 如oracle_ps |
| TABLE_NAME | 表名,即你需要將哪個(gè)表轉(zhuǎn)儲(chǔ)為json文件 | 如tb_oracle_data |
| OUTPUT_FILE | 輸出文件名,json文件的保存位置和名稱(chēng) | 如./output_data.json |
2. 數(shù)據(jù)庫(kù)連接
首先需要連接數(shù)據(jù)庫(kù),以下為連接數(shù)據(jù)庫(kù)的代碼
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. 獲取數(shù)據(jù)
獲取表中的數(shù)據(jù),通過(guò)連接參數(shù)查詢(xún)表中字段和數(shù)據(jù)并整合
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
將數(shù)據(jù)保存為json格式的文件輸出
這里文件名可以自定義文件路徑和名稱(chēng)
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
)
到此這篇關(guān)于Oracle數(shù)據(jù)庫(kù)將表數(shù)據(jù)轉(zhuǎn)儲(chǔ)為JSON格式文件的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)Oracle表數(shù)據(jù)轉(zhuǎn)儲(chǔ)為JSON文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle 11g實(shí)現(xiàn)安全加固的完整步驟
這篇文章主要給大家介紹了關(guān)于Oracle 11g實(shí)現(xiàn)安全加固的完整步驟,文中通過(guò)示例代碼將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Oracle 11g具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05
Oracle數(shù)據(jù)庫(kù)并行查詢(xún)出錯(cuò)的解決方法
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)并行查詢(xún)出錯(cuò)的解決方法,需要的朋友可以參考下2014-07-07
Oracle數(shù)據(jù)庫(kù)自定義類(lèi)型type的用法詳解
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)自定義類(lèi)型type的用法詳解,Oracle?數(shù)據(jù)庫(kù)的概念和其它數(shù)據(jù)庫(kù)不一樣,這里的數(shù)據(jù)庫(kù)是一個(gè)操作系統(tǒng)只有一個(gè)庫(kù),可以看作是?Oracle?就只有一個(gè)大數(shù)據(jù)庫(kù),需要的朋友可以參考下2023-07-07
Oracle誤刪除表數(shù)據(jù)后的數(shù)據(jù)恢復(fù)詳解
這篇文章主要介紹了Oracle誤刪除表數(shù)據(jù)后的數(shù)據(jù)恢復(fù)詳解,需要的朋友可以參考下2015-08-08

