Oracle Python

【Python】cx_Oracleでデータを一括挿入する方法

投稿日:2020年6月9日 更新日:

概要

pythonからOracleデータベースを操作するライブラリとしてcx_Oracleがあります。cx_Oracleを使ってOracleデータベースへレコードを挿入することはもちろん可能ですが、 大量のレコードを挿入したい場合 は1レコードずつだと時間がかかってしまいます。今回はこれを少しでも短い時間で実現するために、 一括で挿入する 方法について実践してみました。


環境

python 3.7.3
Oracle 18c Express Edition

無料で使用できるOracle Express Editionのインストール方法についてはこちらを参考にしてください。


Step1 : Oracle側テーブル作成

まずはOracle側にテスト用のとして、USER01というスキーマを定義し、その下にoracle_insertという名前のテーブルオブジェクトを作りました。

SQLは以下のようなコードです。

CREATE TABLE USER01.ORACLE_INSERT(
	col1 int
	,col2 int
	,col3 int
)


Step2 : Pythonによる一括挿入コード

続いてPythonから先ほど作成したOracleのテーブルへデータを挿入するコードを書いていきます。流れとしては以下です。

  • datasetで挿入するデータを作成
  • cx_Oracleで接続を作成
  •  cur.executemany()で 引数にsqlとdatasetを入れ、 一括で挿入 
  • commitとconnection.closeして終了
#cx_Oracleライブラリの読み込み
import cx_Oracle

#リスト型でデータセットを定義
dataset =[
    [1,2,3]
    ,[4,5,6]
    ,[7,8,9]
    ,[10,11,12]
    ,[13,14,15]
    ,[16,17,18]
    ,[19,20,21]
] 

#Oracleデータベースへの接続情報の定義
HOST = 'localhost'
PORT = '1521'
DB_NAME = 'xepd1'
USER = 'user01'
PASSWORD = 'password01'
SERVICE_NAME = 'xepdb1'

#接続の作成 
tns = cx_Oracle.makedsn(HOST, PORT, service_name =SERVICE_NAME)
conn = cx_Oracle.connect(USER,PASSWORD,tns)

#カーソルの取得
cur = conn.cursor()

#一括挿入
cur.executemany("insert into user01.oracle_insert (col1, col2, col3) values (:1, :2 ,:3)", dataset)

#コミット
conn.commit()

#コネクション切断
conn.close()

一括挿入するための仕掛けとしてはexecutemany()メソッドを使う部分です。このメソッドを使うことで、一行づつのレコード挿入ではなく一括で挿入してくれます。

まとめ

一括挿入のコード自体はシンプルに書けました。ただ、パフォーマンスについては検証できていないので、今後時間など測ってみたいと思います。

以上

Pythonを一から学ぶのにおすすめの本はコチラ

-Oracle, Python
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【Python】requestで403エラーが出るときの原因

Contents1 概要2 ID/PASS間違い3 URL間違い4 ADドメインの外からアクセス5 プロキシがうまく設定できていない6 プロキシが邪魔してくる7 まとめ8 参考とさせて頂いたサイト 概 …

VSCodeから外部のJupyterへ接続する

Contents1 目的2 環境3 Step1 : Jupyterのconfig設定4 Step2 : VSCodeからの接続5 Step3 : Jupyterを使用して確認6 まとめ 目的 自端末の …

【Python】pandas でnanデータを判定する方法

Contents1 概要2 データ3 NaNの判定パターン3.1 DataFrameで判定する場合3.2 Seriesで判定する場合3.3 要素で判定する場合3.3.1 numpy.float64のデ …

Windows10環境のPython3でMeCabを使えるようにするまで

Contents1 概要2 環境3 Step1 : MeCabのインストール4 Step2 : mecab-python3のインストール5 Step3 : 動作確認5.1 もしエラーが出る場合 概要 …

【Python】階乗と順列と組合せ

Contents1 目的2 階乗の計算方法3 順列の計算4 組合せの計算5 まとめ 目的 統計的なデータ分析アプローチの中には確率的な考え方も多く使われます。今回は確率的な手法を用いる際に必要となる基 …

言語切り替え

カテゴリー