当前位置: 首页 > article >正文

将数据从 Oracle 加载到 Azure 的框架

Oracle 是一种流行的关系数据库管理系统(RDBMS),许多组织都使用它来存储和管理其数据。然而,随着云计算的出现,许多组织正在转向基于云的解决方案,以满足其数据存储和处理需求。Azure Blob 存储和 Synapse 专用 SQL 池是 Microsoft 提供的两种流行的基于云的解决方案,用于存储和处理数据。在本文中,我们将探讨如何创建一个框架,将数据作为 Parquet 文件从 Oracle 加载到 Azure Blob 存储,然后将其加载到 Synapse 专用 SQL 池。

数据存储

步骤 1:设置 Azure Blob 存储

此过程的第一步是设置 Azure Blob 存储。为此,可以创建 Azure 帐户,然后创建存储帐户。创建存储帐户后,可以在存储帐户中创建一个容器,用于存储 Parquet 文件。请务必记下存储帐户的连接字符串和容器的名称,因为稍后需要用到它们。

步骤 2:安装所需的库

接下来,需要安装所需的库才能与 Oracle 和 Azure Blob 存储进行交互。可以使用以下命令安装库:

pip install cx_Oracle
pip install azure-storage-blob

步骤 3:连接到 Oracle

安装所需的库后,您需要连接到 Oracle。您可以使用以下代码创建连接:

import cx_Oracle

conn = cx_Oracle.connect('username/password@hostname:port/servicename')

将用户名、密码、主机名、端口和服务名称替换为适用于 Oracle 数据库的值。

步骤 4:从 Oracle 查询数据

建立与 Oracle 的连接后,可以查询要传输到 Azure Blob 存储的数据。您可以使用以下代码查询数据:

import pandas as pd

query = 'SELECT * FROM my_table'

df = pd.read_sql(query, conn)

# Replace my_table with the name of the table that you want to query.

步骤 5:将数据写入 Parquet 文件

查询数据后,需要将其写入 Parquet 文件。可以使用以下代码将数据写入 Parquet 文件:

import pyarrow as pa
import pyarrow.parquet as pq

table = pa.Table.from_pandas(df)

pq.write_table(table, 'my_file.parquet')

# Replace my_file.parquet with the name that you want to give to the Parquet file.

步骤 6:将 Parquet 文件上传到 Azure Blob 存储

创建 Parquet 文件后,需要将其上传到 Azure Blob 存储。您可以使用以下代码上传文件:

from azure.storage.blob import BlobServiceClient

connection_string = 'DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey;EndpointSuffix=core.windows.net'
container_name = 'my_container'
blob_name = 'my_file.parquet'

blob_service_client = BlobServiceClient.from_connection_string(connection_string)

blob_client = blob_service_client.get_blob_client(container_name, blob_name)

with open('my_file.parquet', 'rb') as data:
    blob_client.upload_blob(data)

# Replace myaccount, mykey, my_container, and my_file.parquet with the corresponding values for your storage account and container.

步骤 7:将 Parquet 文件加载到 Synapse 专用 SQL 池

最后一步是将 Parquet 文件从 Azure Blob 存储加载到 Synapse 专用 SQL 池。可以使用以下代码在 Synapse 专用 SQL 池中创建外部数据源:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';

CREATE DATABASE SCOPED CREDENTIAL cred_name
WITH IDENTITY = 'username',
SECRET = 'password';

CREATE EXTERNAL DATA SOURCE data_source_name
WITH (
    TYPE = HADOOP,
    LOCATION = 'wasbs://container_name@account_name.blob.core.windows.net',
    CREDENTIAL = cred_name
);

password, username, account_name, 和 container_name 替换为 Azure Blob 存储帐户和容器的相应值。

接下来,可以使用以下代码在 Synapse 专用 SQL 池中创建外部表:

CREATE EXTERNAL TABLE external_table_name
(
    column1 datatype1,
    column2 datatype2,
    ...
)
WITH (
    LOCATION = '/path/to/parquet/file',
    DATA_SOURCE = data_source_name,
    FILE_FORMAT = 'parquet'
);

external_table_name, column1, datatype1 等替换为外部表的相应值。

最后,可以使用以下代码将数据从外部表插入到 Synapse 专用 SQL 池中的常规表:

INSERT INTO regular_table_name
SELECT column1, column2, ...
FROM external_table_name;

regular_table_name, column1, column2 等替换为常规表的适当值。

结论

通过执行以上步骤,您可以轻松地将数据从 Oracle 传输到 Synapse 专用 SQL 池,并利用基于云的解决方案的优势满足您的数据存储和处理需求。


http://www.kler.cn/news/18246.html

相关文章:

  • 68元工业级双核A7,全新T113核心板震撼上市!
  • CSA发布|《洞察2022 云上数据安全与重要事项 》
  • spring-web HandlerAdapter 源码分析
  • 记录每日LeetCode 2432.处理用时最长的那个任务的员工 Java实现
  • Feign组件的使用及开发中使用方式
  • ZC706P试验PL_DDR3内存条的步骤方法
  • 使用SaleSmartly自动化流程的 5 个原因
  • 网络基础学习:什么是网络与网络发展史
  • 接口自动化测试之HTTP协议详解(敢称全网最全)
  • AP360X 可充电多功能LED手电筒与移动照明控制ic和应用方案
  • 【SpringBoot】SpringBoot集成ElasticSearch
  • AQS底层源码解析
  • 如何利用问卷工具助力活动开展,实现高效数据收集?
  • 一起学 WebGL:绘制图片
  • 数据库中全局锁、表级锁、行级锁的区别
  • pyinstaller打包Mediapipe时遇到的问题
  • PCIe物理层弹性缓存机制(详细)解析-PCIe专题知识(四)
  • ( “图“ 之 二分图 ) 785. 判断二分图 ——【Leetcode每日一题】
  • 2023年全国最新保安员精选真题及答案65
  • 获得 随机验证码(以图片为底层)
  • OmniVerse + ChatGPT = 智能3D建模
  • 416. 分割等和子集
  • JavaWeb综合案例-Servlet优化
  • Selenium:三种等待方式
  • 【C++学习】文件操作
  • c++ cuda加速学习笔记
  • cookie和session的简单介绍(lnh25)
  • OJ练习第93题——数青蛙
  • Docker启动多个mysql容器
  • (六)【平衡小车制作】位置式PID、直立环与速度环编程