从 sqlite 迁移到 Oracle 数据库

ops/2024/10/19 15:30:49/

sqlite 迁移到 Oracle 数据库

  • 0. 引言
  • 1. 代码

0. 引言

今天发现一个有意思的竞赛,竞赛中使用了 sqlite 数据库

由于个人更习惯 Oracle 数据库,所以将 sqlite 数据库迁移到了 Oracle 数据库

此文章记录一下迁移时使用的 Python 代码。

1. 代码

import os
import sqlite3import oracledb
from dotenv import find_dotenv, load_dotenv_ = load_dotenv(find_dotenv())# 连接SQLite数据库
sqlite_conn = sqlite3.connect('./dataset/博金杯比赛数据.db')
sqlite_cursor = sqlite_conn.cursor()# 连接Oracle数据库
oracle_conn = oracledb.connect(user="username", password="password", dsn="host:port/service_name")
oracle_cursor = oracle_conn.cursor()# 获取SQLite数据库中的表名
sqlite_cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = sqlite_cursor.fetchall()def map_sqlite_type_to_oracle(sqlite_type):# 根据需要映射SQLite数据类型到Oracle数据类型# 这是一个更详尽的映射示例mapping = {'INTEGER': 'NUMBER(10)','TEXT': 'VARCHAR2(255)','REAL': 'FLOAT','BLOB': 'BLOB','NUMERIC': 'NUMBER'}return mapping.get(sqlite_type, 'VARCHAR2(255)')  # 默认类型为 VARCHAR2(255)# 迭代每个表
for table in tables:table_name = table[0]print(f"Migrating table: {table_name}")# 获取表结构sqlite_cursor.execute(f"PRAGMA table_info({table_name});")columns = sqlite_cursor.fetchall()# 构建并执行Oracle表的创建语句column_defs = ', '.join(f"\"{column[1]}\" {map_sqlite_type_to_oracle(column[2])}" for column in columns)create_table_query = f"CREATE TABLE {table_name} ({column_defs})"print(f"{create_table_query=}")oracle_cursor.execute(create_table_query)# 测试时想Drop掉Table时使用# oracle_cursor.execute(f"DROP TABLE {table_name}")# 准备批量插入语句col_placeholders = ', '.join([':' + str(i + 1) for i in range(len(columns))])insert_query = f"INSERT INTO {table_name} VALUES ({col_placeholders})"# 迁移数据sqlite_cursor.execute(f"SELECT * FROM {table_name};")rows = sqlite_cursor.fetchall()oracle_cursor.executemany(insert_query, rows)oracle_conn.commit()sqlite_conn.close()
oracle_conn.close()

完结!


http://www.ppmy.cn/ops/22233.html

相关文章

VSCode 配置 Qt 开发环境

文章目录 1. 环境说明2. 配置系统环境变量 1. 环境说明 操作系统:Windows 11VSCode版本:1.88.1CMake版本:3.27.7Qt6版本:6.7.0(MinGW 11.2.0 64-bit) 2. 配置系统环境变量 自行根据自己的Qt安装路径配置 配置 MinGW 和 CMake C…

GitHub 异常——无法连接22端口:Connection timed out

GitHub 异常——无法连接22端口:Connection timed out 问题描述原因分析:解决方案:参考 问题描述 正常配置并使用使用SSH方式,使用以下命令git clone、git pull、git push,报错如下: ssh: connect to host …

前端开发中浏览器兼容问题总结

前端开发中浏览器兼容问题总结 PC端兼容问题及解决方案移动端兼容问题及解决方案 PC端兼容问题及解决方案 居中问题 div里的内容,IE默认为居中,而FF默认为左对齐,可以尝试增加代码margin: 0 auto;高度问题 两上下排列或嵌套的div&#xff0c…

Git零基础

Git工作流程图 操作指令 分支 、 指令总结 远程仓库

【经验总结】 PostgreSQL的COALESCE 函数用法

COALESCE 函数在 PostgreSQL 中是一个非常有用的函数,它不仅可以用来自动替换 NULL 值,还可以用于多种其他场景。COALESCE 函数接受一系列的参数,并返回第一个非 NULL 的参数值。如果所有参数都是 NULL,那么 COALESCE 函数将返回 …

Flutter应用开发-几种保存简单配置的方式

文章目录 简单配置保存的几种方式使用 shared_preferences 插件优点缺点 使用 hive 插件优点 缺点使用文件存储:优点缺点 简单配置保存的几种方式 在 Flutter 开发的 Android 应用中,保存应用配置并下次启动时读取,有以下几种比较合适的方式…

【MHA】MySQL高可用MHA介绍6-后台运行与管理多套集群

1 后台运行 默认情况下&#xff0c;masterha_manager在前台运行。您可以将masterha_manager程序在后台运行&#xff0c;如下所示。 manager_host$ nohup masterha_manager --conf/etc/app1.cnf < /dev/null > /var/log/masterha/app1/app1.log 2>&1 &设置no…

AI视频教程下载:构建一个ChatGPT股票配对交易机器人

ChatGPT及其后续版本GPT-4已经开始改变世界。人们对新机会感到兴奋&#xff0c;同时对我们社会可能受到的影响感到恐惧。这门课程结合了两个主题&#xff1a;AI和财务&#xff08;算法交易&#xff09;。 你将会学到的&#xff1a; 使用ChatGPT构建一个Python配对交易机器人 …