【oracle003】圖片轉為字節、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/13763.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13763.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13763.shtml

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

相關文章

Vue ref訪問這些元素或組件的實例

可以在任意DOM元素上使用ref屬性&#xff0c;然后在Vue實例中通過this.$refs訪問這個DOM元素 1.訪問子組件實例&#xff0c;可以調用方法或者獲取值 <template><div><input type"text" ref"myInput" /><button click"focusInp…

ubuntu手動替換源后,更新源時提示“倉庫.... jammy Release“ 沒有Release文件

問題如圖所示&#xff0c;由于問題不好定位&#xff0c;我就從替換源&#xff0c;以及解決錯誤提示這兩個步驟&#xff0c;來解決其中可能存在的問題。 1、替換源 這一步驟&#xff0c;網上的資料可以搜到很多&#xff0c;我跟著做了之后&#xff0c;總會冒出來各種各樣的小問…

皮影戲藝術品3D沉浸式展館提供非同一般的趣味體驗

引領藝術展示的未來&#xff0c;深圳華銳視點融合多年的web3d項目制作經驗&#xff0c;傾力打造3D虛擬藝術品展館在線編輯平臺&#xff0c;為您提供一個超越時空限制的線上藝術展示平臺。 一、極致視覺盛宴 我們擁有領先的美術團隊&#xff0c;運用先進的web3D開發技術&#xf…

可能是最適合PS的AI插件,設計師大救星!StartAI初體驗!不是恰飯

這款軟件雖然有一些功能需要完善&#xff0c;比如&#xff1a; 1&#xff1a;生成圖片產品海報&#xff0c;會出現圖隨意出現&#xff0c;跟設計圖起沖突&#xff0c;需要PS才可以正常使用它。 2&#xff1a;即使開會員也需要排隊生成。 3: 還有&#xff0c;會員沒有更加好用的…

vue3結合element-plus之如何優雅的使用表單組件

背景 在日常開發中,我們會經常使用 element-ui 或者是 antdesign 或者是 element-plus 等組件庫實現搜索功能 這里就需要用到相關表單組件 下面就以 element-plus 為例,我們實現一個搜索功能的組件,并且隨著屏幕尺寸的變化,其布局也會跟隨變化 最終大致效果如下: 這里…

詳解VLSM技術

在現代網絡設計中&#xff0c;如何高效地分配和管理IP地址是一個關鍵問題。傳統的子網劃分方法雖然簡單&#xff0c;但在實際應用中常常導致IP地址的浪費。為了應對這一問題&#xff0c;VLSM&#xff08;Variable Length Subnet Mask&#xff0c;可變長子網掩碼&#xff09;技術…

C++:set和map的底層封裝模擬實現

目錄 底層對比&#xff1a; 底層紅黑樹結構和set、map&#xff1a; 底層模擬&#xff1a; 傳值調用&#xff1a; 迭代器&#xff1a; operator &#xff08;&#xff09; find函數 operator&#xff08;&#xff09; 、仿函數 set和map的仿函數 &#xff1a; 圖解&a…

地平線-旭日X3派(RDK X3)上手基本操作

0. 環境 - win10筆記本 - RDK X3 1.0&#xff08;地平線旭日X3派&#xff0c;后來改名為代號RDK X3&#xff09; 1. 下載資料 https://developer.horizon.ai/resource 主要下載鏡像 http://sunrise.horizon.cc/downloads/os_images/2.1.0/release/ 下載得到了 ubuntu-prei…

vs無法打開或包括文件”QTxxx“

vs創建項目時默認引入core、gui、和widgets等模塊&#xff0c;在需要網絡通訊或者圖表等開發時需要添加相應模塊。 點擊擴展 -> QT VS Tools -> QT Project Setting->Qt Modules&#xff0c;添加相應模塊即可

linux自動部署項目的腳本(從git中拉取并執行)

名字&#xff1a;bootStart.sh ?#!/bin/sh #記事本打開&#xff0c;修改編碼格式為utf8&#xff0c;可解決上傳centos后中文亂碼問題 echo echo 自動化部署腳本啟動 echo echo 停止原來運行中的工程 APP_NAME項目名 # 查詢系統中正在運行的項目進程&#xff0c;并停止進程 …

Ubuntu系統版本查看辦法

Ubuntu系統版本查看辦法 1. 使用 lsb_release 命令2. 查看 /etc/issue 文件3. 使用 hostnamectl 命令4. 查看 /etc/os-release 文件5. 查看內核版本6. 使用 neofetch 命令&#xff08;如果已安裝&#xff09;總結 在 Ubuntu 操作系統中&#xff0c;查看當前系統版本的詳細信息可…

頭歌05-排列樹實驗-旅行商問題

""" 題目&#xff1a;設有n個城市組成的交通圖&#xff0c;一個售貨員從住地城市q出發&#xff0c;到其它城市各一次去推銷貨物&#xff0c;最后回到住地城市。 要求&#xff1a;假定兩個城市a&#xff0c;b 從a到b的路程花費w_ab是已知的&#xff0c;問應該怎樣…

奇瑞控股攜手契約鎖推動客戶、供應商及內部業務全程數字化

奇瑞控股集團是安徽省排名第一的制造業企業&#xff0c;同時入選中國企業家協會發布的中國500強、《財富》中國500強&#xff0c;連續21年位居中國品牌乘用車出口第一。 面對汽車行業“新四化”主題及“數字化”時代變革&#xff0c;奇瑞控股持續創新求變&#xff0c;率先引入電…

WIndows常用輔助工具命令

文章目錄 目的pingnbtstatnetstattracert工作原理應用方案ipconfig作用arp作用at作用nslookup作用net作用格式用法ftp作用參數說明telnet作用參數說明tasklist作用參數說明結合篩選器目的 主要是整理windows 下常用cmd命令, 方便我們調試, 分析, 定位解決工程項目中遇到問題…

Java18的新特性介紹

一、概況 Java 18是Java編程語言的最新版本&#xff0c;它于2022年9月發布。Java 18引入了許多新特性和改進&#xff0c;以下是其中一些重要的新特性。 元編程功能&#xff1a;Java 18引入了元注釋和元類型聲明的功能&#xff0c;使開發人員能夠在編譯時對注解進行元處理。這為…

【C++】位圖/布隆過濾器+海量數據處理

目錄 一、位圖 1.1 位圖的概念 1.2 位圖的實現 1.3 位圖的應用&#xff08;面試題&#xff09; 二、布隆過濾器 2.1 布隆過濾器的引入 2.2 布隆過濾器概念 2.3 布隆過濾器的插入和查找 2.4 布隆過濾器的實現 2.5 布隆過濾器的優點和缺陷 2.6 布隆過濾器的應用&#…

Servlet 的 API

HttpServlet init&#xff1a;當 tomcat 收到了 /hello 這樣的路徑是請求后就會調用 HelloServlet&#xff0c;于是就需要對 HelloServlet 進行實例化&#xff08;只實例一次&#xff0c;后續再有請求也不實例了&#xff09;。 destory&#xff1a;如果是通過 smart tomcat 的停…

實驗六 Java流式編程與網絡程序設計 頭歌

實驗六 Java流式編程與網絡程序設計 頭歌 制作不易&#xff01;點個關注&#xff01;給大家帶來更多價值&#xff01; 第1關 字節輸入/輸出流實現數據的保存和讀取 package step1;import java.io.*; import java.util.*;public class SortArray {public static void main(St…

洗地機品牌哪個牌子好?實力派洗地機品牌TOP10榜單

洗地機依靠其洗、拖、吸、烘為一體的功能&#xff0c;能高效的完成地面清潔的工作&#xff0c;深受大家的喜愛。但是洗地機的型號越來越多&#xff0c;功能也越來越多&#xff0c;對于不想花大價錢&#xff0c;又想要高性價比的精致人群來說實在不友好&#xff0c;所以筆者今天…

C++ 中重寫重載和隱藏的區別

重寫&#xff08;override&#xff09;、重載&#xff08;overload&#xff09;和隱藏&#xff08;overwrite&#xff09;在C中是3個完全不同的概念。我們這里對其進行詳細的說明 1、重寫&#xff08;override&#xff09;是指派生類覆蓋了基類的虛函數&#xff0c;這里的覆蓋必…