从 sqlite 迁移到 Oracle 数据库

这篇具有很好参考价值的文章主要介绍了从 sqlite 迁移到 Oracle 数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 引言

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

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

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

1. 代码

import os
import sqlite3

import 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()

完结!文章来源地址https://www.toymoban.com/news/detail-861820.html

到了这里,关于从 sqlite 迁移到 Oracle 数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 实例讲解C++连接各种数据库,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库

      C++ 是一种通用的编程语言,可以使用不同的库和驱动程序来连接各种数据库。以下是一些示例代码,演示如何使用 C++ 连接 SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 数据库。 连接 SQL Server 数据库 要使用 C++ 连接 SQL Server 数据库,可以使用 Microsoft 的 ADODB 库。以

    2024年02月05日
    浏览(36)
  • Linux下oracle数据库启动

    1.登录到Linux服务器(ssh) 2.切换到oracle用户权限 (命令是: # su –l oracle ) 3.进入sqlplus界面(命令是:$ sqlplus /nolog 或 sqlplus / as sysdba) 原本的画面会变为 SQL 接着请输入 SQLconn / as sysdba ; 输入 SQL startup (作用:启动数据库实例) 另外停止数据库的指令如下: SQL shutdown immediate 回到

    2024年02月10日
    浏览(22)
  • 基于RHEL9,ORACLE LINUX 9安装Oracle 19c 数据库

    要基于RHEL9,ORACLE LINUX 9 或RHEL分支,安装ORACLE 19C 数据库,在一年前,没有人会告诉你能够成功,都会告诉你说19C只支持 RHEL7/8,在RHEL9上不支持, 如果你非要安装,在安装到11%时,就会报以下错误: Error in invoking target \\\' libasmclntsh19.ohso libasmperl19.ohso client_sharedlib \\\' of makefile \\\'/u

    2024年02月03日
    浏览(31)
  • Linux环境下重启Oracle数据库

    Linux环境下重启Oracle数据库 1、Linux下以Oracle帐户进入Linux系统。 2、执行以下命令查看数据库监听器的状况: 3、执行以下命令停止数据库监听器运行: 4、杀掉所有session,命令: 5、执行以下命令进入SQLPlus: 6、执行以下命令退出SQLPlus: 7、启动,查看数据库监听器: 8、启动

    2024年02月03日
    浏览(30)
  • Linux系统下操作Oracle数据库

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种

    2023年04月08日
    浏览(25)
  • <Oracle>《Linux 下安装Oracle数据库 - Oracle 19C By CentOS 8 》(第三部分)

    2.5.1 修改centos主机名 类型 英文 解释 静态 Static hostname 内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。 瞬态 Tansient hostname 系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。 灵活 Pretty hostname 有人叫做“别名”主机名,允许使用自由形式(包括

    2024年02月11日
    浏览(31)
  • Linux链接oracle数据库启动——操作步骤

    原本的画面会变为 接着请输入 输入 另外停止数据库的指令如下:   回到终端机模式,输入:ps -ef|grep ora_ (作用是:查看是否有Oracle的进程,如果有,大多数情况说明启动了。) 输入:$ lsnrctl status (作用是:检查监听是否启动。) 以下为没有启动。 如果没有启动,可以输入:$

    2024年02月04日
    浏览(39)
  • linux 下Oracle数据库的连接方式

    在连接到Linux终端后,输入命令“sqlplus / as sysdba”,点击回车,即可登录Oracle数据库。 看下sqlplus的详细介绍先: 用法1: sqlplus-H |-V -H显示SQL*Plus版本和使用帮助。 -V显示SQL*Plus版本。 用法2: 用法2:sqlplus[[option][{logon|/nolog}][start]] option含义是:[-AC][-C版本][-L][-M“options”][-NOLO

    2024年02月02日
    浏览(35)
  • Oracle19c数据库安装 - 基于Linux环境

    安装文件链接在文章末尾。 本文介绍多种在Linux环境下安装Oracle19c数据库软件和Oracle数据库的方式,多种方式选择其中一种即可,适用于19c数据库学习环境的配置。 数据库软件和数据库是不同的,都需要安装。 关闭防火墙和selinux 更改完reboot,使其生效 搭建yum,安装依赖包

    2024年02月15日
    浏览(30)
  • 如何监控Linux和Oracle数据库运行状态

    背景: 在生产环境中,一般可能会发生服务器宕机或者数据库宕机的情况,如何准确的把握找准”生产事故“的具体发生时间,其实有很多方法,可以借助第三方的监控软件或者其他收费软件。 但是本人就是穷逼一个,不可能买或者使用盗版的三方软件。所有设计了以下流

    2024年02月16日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包