【oracle】圖片轉為字節、base64編碼等形式批量插入oracle數據庫并查詢

1.熟悉、梳理、總結下Oracle相關知識體系
2.歡迎批評指正,跪謝一鍵三連!

  • 資源下載: oci.dll、oraocci11.dll、oraociei11.dll3個資源文件
  • 資源下載: Instant Client Setup.exe
  • 資源下載: oci.dll、oraocci11.dll、oraociei11.dll3個資源文件
  • 資源下載: Instant Client Setup.exe
  • 文章參考:【kettle005】kettle訪問Oracle數據庫并處理數據至execl文件(已更新)
  • 文章參考:【oracle】cx_Oracle.DatabaseError: ORA-01036: illegal variable name/number,ORA-00911,DPI-1047
  • 文章參考:【oracle】cx_Oracle.DatabaseError: ORA-24816: Expanded non LONG bind data supplied after actual LONG o

文章目錄

    • 1.`oracle`建表語句
    • 2.圖片轉為字節、base64編碼等形式插入`oracle`數據庫
    • 3.`oracle`數據庫存儲、處理效果

1.oracle建表語句

  • create table youli.youli_image_test
    (id varchar(16), image blob, imagebase64 clob, imagebin blob
    ) select * from youli.youli_image_test WHERE rownum<4SELECT dbms_lob.substr(IMAGEBIN, 40000, 1) ff FROM youli.youli_image_test
    

2.圖片轉為字節、base64編碼等形式插入oracle數據庫

  • 圖片數據轉碼、base64轉碼,反轉可視化顯示驗證

  • python代碼實現

    import sys
    import base64
    import cx_Oracle
    from PIL import Image
    import os
    import iopath = "D:\桌面\itest"
    def intoimg2orcl( id_cnt, img , base64img, bytesimg ):database = cx_Oracle.connect('system/oracle@192.168.48.150/xe') # 建立一個Oracle連接# cx_Oracle.connect("用戶名/密碼@Oracle服務器IP/Oracle的SERVICE_NAME")cursor = database.cursor()  # 存入圖片, 創建游標sql = "insert into youli.youli_image_test values (:1, :2, :3, :4)"args = ( str(id_cnt), img , base64img, bytesimg )cursor.execute( sql, args )database.commit()cursor.close() # 關閉游標database.close() # 關閉數據庫連接print("===============")print("Done! ")def selectimgforcl():database = cx_Oracle.connect('system/oracle@192.168.48.150/xe') # 建立一個Oracle連接# cx_Oracle.connect("用戶名/密碼@Oracle服務器IP/Oracle的SERVICE_NAME")cursor = database.cursor()  # 存入圖片, 創建游標sql = "select * from youli.youli_image_test WHERE rownum<4"cursor.execute( sql )rows = cursor.fetchall()for row in rows:id = row[0]image = row[1].read()imagebase64 = row[2].read()imagebin = row[3].read()bimg = byte2image(imagebin) # 圖片字節數據可視化顯示驗證bimg.show()base642img( imagebase64 ) # 圖片base64數據可視化顯示驗證breakcursor.close() # 關閉游標database.close() # 關閉數據庫連接
    def encode_image(file_path):"""讀取圖片文件并轉換為base64編碼"""with open(file_path, 'rb') as image_file:encoded_string = base64.b64encode(image_file.read())# b64_encode = 'data:image/jpeg;base64,%s' % sreturn encoded_string.decode('utf-8')
    def read2byte( jpg_fpath ):"""圖片數據轉為字節數據"""image = Image.open(jpg_fpath)img_bytes = io.BytesIO()    # 創建一個字節流管道image = image.convert("RGB")    # 把PNG格式轉換成的四通道轉成RGB的三通道,然后再保存成jpg格式image.save(img_bytes, format="JPEG")    # 將圖片數據存入字節流管道, format可以按照具體文件的格式填寫image_bytes = img_bytes.getvalue()  # 從字節流管道中獲取二進制return image_bytes
    def byte2image(byte_data):''' byte轉為圖片, byte_data: 二進制 '''image = Image.open(io.BytesIO(byte_data))return image
    def base642img( base64_encod_str ):"""base64數據轉為圖片數據可視化"""res = base64_encod_strimg_b64decode = base64.b64decode(res)image = io.BytesIO(img_b64decode)img = Image.open(image)img.show()"""循環處理圖片數據,入庫,查詢、可視驗證"""
    id_cnt = 1
    for jpg in os.listdir(path):jpg_fpath = path + '\\' + jpgimg_fp = open( jpg_fpath, 'rb')img = img_fp.read()img_base64 = encode_image( jpg_fpath )img_bytes = read2byte( jpg_fpath )print( len(img), len(img_base64), len(img_bytes) )intoimg2orcl( id_cnt, img , img_base64, img_bytes)   # 插入不同類型圖片編碼數據至oracle數據庫img_fp.close()id_cnt += 1selectimgforcl()break
    

3.oracle數據庫存儲、處理效果

  • open( jpg_fpath, 'rb').read(),image
    在這里插入圖片描述
  • base64,base64.b64encode(image_file.read())
    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13128.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13128.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13128.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LangChain_Tools

1、Tools 可以被Agent、Chain、LLM所使用。 2、tool 的必備屬性有&#xff1a;name、description、JSON schema &#xff08;tool輸入&#xff09;、調用的函數、工具的結果是否應直接返回給用戶。其中name、description和 JSON schema 可用于提示 LLM、寫入在LLM的system pro…

初識C語言——第二十一天

猜數字小游戲的實現&#xff1a; 學會了之后可以自己制作彩票抽獎&#xff0c;哈哈&#xff01; 代碼實現&#xff1a; #include <stdlib.h> #include <time.h>void menu()//無返回值函數 {printf("**************************\n");printf("****…

Linux:退出vim編輯模式

一、使用快捷鍵進行退出 1、按“Esc”鍵進入命令模式 當我們在vim編輯模式下輸入完畢需要進行退出操作時&#xff0c;首先需要按下“Esc”鍵&#xff0c;將vim編輯器從插入模式或者替換模式切換到命令模式。 ESC 2、輸入“:wq”保存并退出 在命令模式下&#xff0c;輸入“:…

在kubernetes中配置Ingress

目錄 1. 安裝Nginx Ingress Controller2. 準備TLS證書3. 編寫Ingress資源定義4. 應用Ingress配置5. 驗證配置 1. 安裝Nginx Ingress Controller 首先&#xff0c;確保你的Kubernetes集群已經準備好。你可以使用Helm或者直接通過yaml文件來安裝Nginx Ingress Controller。這里給…

云原生 初識Kubernetes的理論基礎

一、k8s 的由來及其技術運用 1.1 k8s的簡介 Kubernetes&#xff0c;詞根源于希臘語的 舵手、飛行員。在國內又稱k8s&#xff08;因為k和s之間有8個字母&#xff0c;所以得名。“國內程序員的幽默”&#xff09;。 作用&#xff1a; 用于自動部署、擴展和管理“容器化&#x…

利用遠程控制軟件FinalShell遠程連接虛擬機上的Linux系統(Windows)

一. VMware Workstation 安裝CentOS Linux操作系統 傳送門&#xff1a;VMware Workstation 安裝CentOS Linux操作系統 1.右鍵打開終端 2.輸入ifconfig 找到ens33對應 inet的id&#xff0c;這個就是虛擬機的ip地址圖中所示為&#xff1a;192.168.5.128 3.打開finalshell 如…

如何使用 PuTTY 創建 SSH 密鑰以連接到 VPS

公鑰和私鑰 SSH 密鑰的好處 如果您的無頭或遠程 VPS 可以通過互聯網訪問&#xff0c;您應該盡可能使用公鑰身份驗證而不是密碼。這是因為與僅使用密碼相比&#xff0c;SSH 密鑰提供了一種更安全的登錄方式。雖然密碼最終可以通過暴力破解攻擊破解&#xff0c;但 SSH 密鑰幾乎不…

C++ | Leetcode C++題解之第92題反轉鏈表II

題目&#xff1a; 題解&#xff1a; class Solution { public:ListNode *reverseBetween(ListNode *head, int left, int right) {// 設置 dummyNode 是這一類問題的一般做法ListNode *dummyNode new ListNode(-1);dummyNode->next head;ListNode *pre dummyNode;for (i…

抽象類介紹

抽象類 【一】什么是抽象 # 將某幾個具體的生物&#xff0c;根據特征總結成一個類&#xff0c;逐層向上總結 # 唐老鴨 肉鴨 北京烤鴨 ---> 鴨子 # 北極熊 黑熊 --> 熊 # 貓 老虎 --> 貓科 # 鴨子 熊 貓科 --> 動物 【二】什么是繼承 # 動物 ---> 熊 --->…

【刷題篇】二分查找(二)

文章目錄 1、山脈數組的峰頂索引2、尋找峰值3、尋找旋轉排序數組中的最小值4、LCR 點名 1、山脈數組的峰頂索引 符合下列屬性的數組 arr 稱為 山脈數組 &#xff1a; arr.length > 3 存在 i&#xff08;0 < i < arr.length - 1&#xff09;使得&#xff1a; arr[0] &l…

macOS Ventura 13如何設置定時重啟(命令行)

文章目錄 macOS Ventura 13如何設置定時重啟(命令行)前言具體設置步驟及命令解釋其他 macOS Ventura 13如何設置定時重啟(命令行) 前言 由于升級 macOS 13 Ventura 之后&#xff0c;之前在節能里面通過鼠標點擊設置開機關機的方法不能用了&#xff0c;現在只能用命令設置開機…

css筆記總結2

找到所有的 h1 標簽。 選擇器&#xff08;選對人&#xff09; 設置這些標簽的樣式&#xff0c;比如顏色為紅色&#xff08;做對事&#xff09;。 ##css基礎選擇器 基礎選擇器又包括&#xff1a;標簽選擇器、類選擇器、id 選擇器和通配符選擇器 ###標簽選擇器&#xff1a; 標簽…

【PB案例學習筆記】-03用戶名密碼校驗

寫在前面 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gitee代碼倉庫https://gitee.com/xiezhr/pb-project-example.git 需要源代碼的小伙伴們可以自行…

KNN算法處理多元分類任務

概述 這個案例還是基于之前的案例進行改造。 之前的案例代碼完整如下&#xff1a; from sklearn.datasets import make_blobs # KNN 分類器 from sklearn.neighbors import KNeighborsClassifier # 畫圖工具 import matplotlib.pyplot as plt # 數據集拆分工具 from sklearn…

ur5 moveit配置過程

ros-noeticur5機械臂抓取仿真_ros機械臂視覺抓取仿真-CSDN博客

Java獲取請求參數

1.簡單參數接收 前端請求參數與Controller接受變量名一致 如果參數名不一致&#xff0c;接受不成功。 可以用RequestParam指定參數名&#xff0c;可以用username接收&#xff08;不推薦&#xff09;。 required true&#xff0c;表示參數必須傳遞&#xff0c;如果不傳遞會報錯…

std文件中寫入內容基礎

在C中&#xff0c;使用標準庫中的std::fstream類可以進行文件操作&#xff0c;包括文件的讀取和寫入。下面是一些常見的文件寫入模式及其介紹&#xff1a; 文件寫入模式 std::ofstream (Output File Stream) 專門用于文件寫入的流。默認模式下&#xff0c;如果文件不存在&…

連通民心,服務無界:政務熱線系統打造便捷政務新時代

一.引言 在21世紀的數字浪潮中&#xff0c;政府服務模式正經歷著前所未有的變革。隨著信息技術的飛速發展&#xff0c;民眾對于政務服務的期待已不再局限于傳統的面對面交流&#xff0c;而是更加傾向于高效、便捷、全天候的服務體驗。在此背景下&#xff0c;政務熱線系統應運而…

深入剖析Tomcat(八) 載入器與打破雙親委派機制的自定義類加載器

寫這篇文章讓我頭大了好幾天&#xff0c;書中描述的內容倒是不多&#xff0c;可能也是那會Tomcat的現狀。如今Tomcat發展了好多代&#xff0c;加上springboot的廣泛應用&#xff0c;導致現在的類加載的步驟和Tomcat資料中描述的大相徑庭。可能也是由于微服務的發展&#xff0c;…

環形數組介紹要點和難點具體應用實例和代碼解析

環形數組(或稱為循環數組、圓形數組)是一種邏輯結構,其中數組的末尾和開頭在邏輯上是相連的,從而形成一個環或圈。在實際的物理存儲中,環形數組通常是一個普通的線性數組,但在訪問和操作時采用特定的邏輯來處理邊界條件,使得元素可以從數組的末尾“循環”到開頭,或者從…