ora2pg使用記錄

来源:https://www.cnblogs.com/zhao-XH/archive/2023/09/27/17732115.html
-Advertisement-
Play Games

ora2pg使用記錄 前言 這篇文章是我在學習使用ora2pg過程中的學習記錄,以便日後遺忘查閱; 諸君也可跟隨我的步伐瞭解一下ora2pg,或可移步如下官方文檔參考學習:Ora2Pg : Migrates Oracle to PostgreSQL (darold.net) 本文的ora2pg安裝和 ...


ora2pg使用記錄


前言

這篇文章是我在學習使用ora2pg過程中的學習記錄,以便日後遺忘查閱;

諸君也可跟隨我的步伐瞭解一下ora2pg,或可移步如下官方文檔參考學習:Ora2Pg : Migrates Oracle to PostgreSQL (darold.net)

本文的ora2pg安裝和使用記錄是在win10系統下遷移遠程Oracle資料庫到遠程PostgreSQL資料庫的應用環境下進行的,如果你的應用場景不同,可簡閱做思路參考!


目錄

目錄


初識ora2pg

一、ora2pg是什麼?

Ora2Pg - Oracle to PostgreSQL database schema converter(Oracle到PostgreSQL資料庫模式轉換器)

Ora2Pg是一個開源免費的資料庫遷移工具,用於將Oracle資料庫遷移到PostgreSQL相容的模式。它連接您的Oracle資料庫,自動掃描並提取其結構或數據,然後生成可以載入到PostgreSQL資料庫中的SQL腳本。Ora2Pg非常易於使用,除了提供連接到Oracle資料庫所需的參數外,不需要任何Oracle資料庫知識。

(一)、Ora2Pg能做的遷移動作如下

TABLE with constraints, VIEW, MVIEW, TABLESPACE, SEQUENCE, INDEXES, TRIGGER, GRANT, FUNCTION, PROCEDURE, PACKAGE, PARTITION, TYPE, INSERT or COPY, FDW, QUERY, KETTLE, SYNONYM

(二)、功能包括

- Export full database schema (tables, views, sequences, indexes), with unique, primary, foreign key and check constraints.
【導出完整的資料庫架構(表、視圖、序列、索引),具有唯一、主鍵、外鍵和檢查約束。】
- Export grants/privileges for users and groups.
【導出用戶和組的授予/許可權。】
- Export range/list partitions and sub partitions.
【導出範圍/列表分區和子分區。】
- Export a table selection (by specifying the table names).
【導出選擇的表格(通過指定表格名稱)。】
- Export Oracle schema to a PostgreSQL 8.4+ schema.
【將Oracle模式導出為PostgreSQL 8.4+模式。】
- Export predefined functions, triggers, procedures, packages and package bodies.
【導出預定義的函數、觸發器、過程、包和包體。】
- Export full data or following a WHERE clause.
【導出完整數據或遵循WHERE子句。】
- Full support of Oracle BLOB object as PG BYTEA.
【完全支持Oracle BLOB對象作為PG BYTEA。】
- Export Oracle views as PG tables.
【將Oracle視圖導出為PG表。】
- Export Oracle user defined types.
【導出Oracle用戶定義的類型。】
- Provide some basic automatic conversion of PLSQL code to PLPGSQL.
【將Oracle表導出為外部數據包裝表。】
- Works on any platform.
【適用於任何平臺。】
- Export Oracle tables as foreign data wrapper tables.
【將Oracle表導出為外部數據包裝表。】
- Export materialized view.
【導出具體化視圖。】
- Show a  report of an Oracle database content.
【顯示Oracle資料庫內容的報告。】
- Migration cost assessment of an Oracle database.
【Oracle資料庫的遷移成本評估。】
- Migration difficulty level assessment of an Oracle database.
【Oracle資料庫的遷移難度級別評估。】
- Migration cost assessment of PL/SQL code from a file.
【從文件遷移PL/SQL代碼的成本評估。】
- Migration cost assessment of Oracle SQL queries stored in a file.
【存儲在文件中的Oracle SQL查詢的遷移成本評估。】
- Generate XML ktr files to be used with Penthalo Data Integrator (Kettle)
【生成要與Penthalo Data Integrator(Kettle)一起使用的XML ktr文件】
- Export Oracle locator and spatial geometries into PostGis.
【將Oracle定位器和空間幾何圖形導出到PostGis中。】
- Export DBLINK as Oracle FDW.
【將DBLINK導出為Oracle FDW。】
- Export SYNONYMS as views.
【將SYNONYMS導出為視圖。】
- Export DIRECTORY as external table or directory for external_file extension.
【將DIRECTORY導出為external_file擴展名的外部表或目錄。】
- Dispatch a list of SQL orders over multiple PostgreSQL connections
【通過多個PostgreSQL連接調度SQL訂單列表】
- Perform a diff between Oracle and PostgreSQL database for test purpose.
【通過多個PostgreSQL連接調度SQL訂單列表】
- MySQL/MariaDB and Microsoft SQL Server migration.
【MySQL/MariaDB和Microsoft SQL Server遷移。】

需要註意的是:Ora2Pg盡最大努力將您的Oracle資料庫自動轉換為PostgreSQL,但仍有手動工作要做。為函數、procedures、包和觸發器生成的Oracle特定PL/SQL代碼必須經過審查,以匹配PostgreSQL語法。

二、ora2pg下載安裝及環境配置

(一)、Perl下載安裝

首先因為Ora2Pg是Perl語言編寫的,所以要使用這個工具,則必須為其搭建Perl運行環境。註意:安裝版本要大於等於5.10

Perl下載地址Strawberry Perl for Windows

下載好如下:

image-20230921095352008

傻瓜式安裝即可,沒有特殊操作。

(二)、Oracle客戶端或完整的Oracle安裝配置

1.1 安裝

必須在系統上安裝Oracle Instant Client或完整的Oracle安裝程式。

進行資料庫遷移工作這些應該都已經安裝了,這裡不做贅述。

如果確實沒有安裝,這裡推薦幾篇相關博文供參考:

  1. Oracle客戶端安裝教程(圖文)
  2. Oracle Client(客戶端) 安裝與配置
  3. oracle資料庫安裝(全步驟詳解)
  4. Oracle下載安裝教程—Oracle19c下載安裝(每一步)

註意:這裡由於我的資料庫伺服器都不在本機,這裡我使用的是Oracle客戶端進行的接下來的操作。

如果你的Oracle資料庫在本機,這裡也推薦一篇文章以作參考!

[Windows下Ora2Pg(Oracle到PostgreSQL遷移工具)的安裝配置及使用教程](https://blog.csdn.net/qq_34272470/article/details/128128287#:~:text=使用Ora2Pg 1 1.cmd定位到解壓後的Ora2Pg目錄中,執行下麵的命令使用Perl解析Ora2Pg perl Makefile.PL 2 2.上面的命令執行完成後,會有提示,按照提示執行下麵的命令即可 dmake,get DBD%3A%3AOracle 8 8.安裝DBD%3A%3AOracle驅動 install DBD%3A%3AOracle ... 更多項目)

1.2 配置

在使用ora2pg時,我們需要配置Oracle客戶端(或Oracle)的ORACLE_HOME環境變數,值為客戶端安裝目錄。(這是必須的

官方文檔:You need to have the Oracle client libraries installed and the ORACLE_HOME environment variable must be defined.

image-20230921102403724

(三)、Ora2Pg安裝配置

Ora2Pg下載地址

  1. SOURCEFORGE:ora2pg download | SourceForge.net
  2. GitHub:Releases · darold/ora2pg (github.com)

下載好如下:

image-20230921105153406

1.1 安裝

解壓到任意目錄即可!

1.2 配置(win10下配置)
1.2.1 配置前說明
  1. Ora2Pg連接資料庫併進行遷移動作,DBIPerl模塊是必須安裝的,並且其版本要大於1.614。

  2. Ora2Pg不僅能夠遷移Oracle資料庫,還可以遷移MySQL、SQL Server等,只需要安裝對應的Perl模塊即可。例如:

    遷移Oracle - install DBD::Oracle

    遷移MySQL - install DBD::MySQL

    遷移SQL Server - install DBD::ODBC

    有些ora2pg發行版可能還需要安裝Time::HiResPerl模塊

  3. Ora2Pg可以導出sql腳本供pg資料庫導入執行,也可以直接導入到遠程pg資料庫。

    要導入sql腳本你還需要安裝PostgreSQL客戶端(psql)

    如果你想動態直接導入到PostgreSQL,你至少還需要安裝DBD::PgCompress::ZlibPerl模塊

    預設情況下,Ora2Pg生成sql腳本供PostgreSQL客戶端導入執行

1.2.2 Oracle遷移到PostgreSQL環境配置
  1. 通過cmd進入到Ora2Pg安裝目錄,查看Perl版本(Perl版本要大於5.10

    image-20230921113420595

  2. 將把Ora2Pg.pm安裝到Perl庫

    perl Makefile.PL
    gmake && gmake install
    

    image-20230921133616965

  3. 安裝DBIPerl模塊

    cpan
    get DBI
    install DBI
    

    image-20230921133533713

  4. 安裝DBD::OraclePerl模塊

    官方文檔:Installing DBD::Oracle require that the three Oracle packages: instant-client, SDK and SQLplus are installed as well as the libaio1 library.

    可以看到,安裝DBD::Oracle還需要Oracle SDK和SQLplus,如果你和我一樣安裝的是精簡版Oracle客戶端,那麼你還需要去官網下載安裝Oracle SDK和SQLplus。

    下載地址Instant Client for Microsoft Windows (x64) 64-bit (oracle.com)

    直接點擊這裡下載的是最新版本的精簡版客戶端、SQL*Plus、SDK

    image-20230921144748604

    下載好如下三個壓縮包:

    image-20230921145101928

    SQL*Plus、SDK的安裝是建立在精簡版客戶端的基礎上的,你需要先安裝好精簡版客戶端。

    精簡版客戶端安裝:精簡版客戶端客戶端的安裝很簡單,解壓到任意目錄即可!配置ORACLE_HOME環境變數。註意!註意!註意!安裝路徑上一定不要有空格或中文字元!否則在安裝DBD::Oracle的時候,會報錯!

    SQL*Plus和SDK安裝:直接將壓縮包文件解壓精簡版客戶端安裝目錄即可!

    image-20230921150118726

    安裝好之後,還需要配置LD_LIBRARY_PATH環境變數(註意,精簡版客戶端不安裝SDK是沒有sdk\lib的,安裝DBD::Oracle時會載入lib)

    官方文檔:If you are using Instant Client from ZIP archives, the LD_LIBRARY_PATH and ORACLE_HOME will be the same and must be set to the directory where you have installed the files. For example: /opt/oracle/instantclient_12_2/

    image-20230921150323456

    做好這一切開始安裝DBD::Oracle

    cpan
    get DBD::Oracle
    install DBD::Oracle
    

    image-20230921150836730

    安裝完成之後再執行一下:install DBD::Oracle,確定是否安裝成功,如下表示安裝成功!

    image-20230921150937498

三、ora2pg參數說明

ora2pg可以使用命令行的方式進行數據遷移,但是這種方式我暫未實驗,瞭解一些常用命令即可!

(一)、常用命令

ora2pg -c | --conf file : 設置非預設的配置文件,預設配置文件為 /etc/ora2pg/ora2pg.conf。(指定自定義配置文件路徑)

ora2pg -d | --debug : 使用調試模式,輸出更多詳細信息。

(二)、參數幫助說明(直譯)

# ora2pg --help
Usage: ora2pg [-dhpqv --estimate_cost --dump_as_html] [--option value]
-a | --allow str : 指定允許導出的對象列表,使用逗號分隔。也可以與 SHOW_COLUMN 選項一起使用。
-b | --basedir dir: 設置預設的導出目錄,用於存儲導出結果。
-c | --conf file : 設置非預設的配置文件,預設配置文件為 /etc/ora2pg/ora2pg.conf。
-d | --debug : 使用調試模式,輸出更多詳細信息。
-D | --data_type STR : 通過命令行設置數據類型轉換。
-e | --exclude str: 指定導出時排除的對象列表,使用逗號分隔。也可以與 SHOW_COLUMN 選項一起使用。
-h | --help : 顯示幫助信息。
-g | --grant_object type : 導出指定類型的對象上的授權信息,取值參見 GRANT_OBJECT 配置項。
-i | --input file : 指定要導入的 Oracle PL/SQL 代碼文件,導入文件時不需要連接到 Oracle 資料庫。
-j | --jobs num : 設置用於發送數據到 PostgreSQL 的併發進程數量。
-J | --copies num : 設置用於從 Oracle 導出數據的併發連接數量。
-l | --log file : 設置日誌文件,預設為 stdout。
-L | --limit num : 導出數據時,每次寫入磁碟之前在記憶體中緩衝的記錄數量,預設值為 10000。
-m | --mysql : 導出 MySQL 資料庫。
-n | --namespace schema : 設置需要導出的 Oracle 模式。
-N | --pg_schema schema : 設置 PostgreSQL 中的搜索路徑 search_path。
-o | --out file : 設置導出的 SQL 文件的存儲路徑。預設值為當前目錄下的 output.sql 文件。
-p | --plsql : 啟用 PLSQL 代碼到 PLPGSQL 代碼的轉換。
-P | --parallel num: 同時導出多個表,設置併發數量。
-q | --quiet : 不顯示進度條。
-s | --source DSN : 設置 Oracle DBI 數據源。
-t | --type export: 設置導出類型。該參數將會覆蓋配置文件中的導出類型(TYPE)。
-T | --temp_dir DIR: 為多個同時運行的 ora2pg 腳本指定不同的臨時存儲目錄。
-u | --user name : 設置連接 Oracle 資料庫連接的用戶名。也可以使用 ORA2PG_USER 環境變數。
-v | --version : 顯示 Ora2Pg 版本信息並退出。
-w | --password pwd : 設置連接 Oracle 資料庫的用戶密碼。也可以使用 ORA2PG_PASSWD 環境變數。
--forceowner : 導入數據時,強制 ora2pg 將導入 PostgreSQL 的表和序列的擁有者設置為連接 Oracle 資料庫時的用戶。如果設置為指定的用戶名,所有導入的對象屬於該用戶。預設情況下,對象的擁有者為連接 Pg 資料庫的用戶。
--nls_lang code: 設置 Oracle 客戶端的 NLS_LANG 編碼。
--client_encoding code: 設置 PostgreSQL 客戶端編碼。
--view_as_table str: 將視圖導出為表,多個視圖使用逗號分隔。
--estimate_cost : 在 SHOW_REPORT 結果中輸出遷移成本評估信息。
--cost_unit_value minutes: 成本評估單位,使用分鐘數表示。預設值為 5 分鐘,表示一個 PostgreSQL 專家遷移所需的時間。如果是第一次遷移,可以設置為 10 分鐘。
 --dump_as_html : 生成 HTML 格式的遷移報告,只能與 SHOW_REPORT 選項一起使用。預設的報告是一個簡單的文本文件。
 --dump_as_csv : 與上個參數相同,但是生成 CSV 格式的報告。
 --dump_as_sheet : 生成遷移評估時,為每個資料庫生成一行 CSV 記錄。
 --init_project NAME: 創建一個ora2pg 項目目錄結構。項目的頂級目錄位於根目錄之下。
 --project_base DIR : 定義ora2pg 項目的根目錄,預設為當前目錄。
 --print_header : 與 --dump_as_sheet 一起使用,輸出 CSV 標題信息。
 --human_days_limit num : 設置遷移評估級別從 B 升到 C 所需的人工日數量。預設值為 5 人工日。
 --audit_user LIST : 設置查詢 DBA_AUDIT_TRAIL 表時需要過濾的用戶名,多個用戶使用逗號分隔。該參數只能用於 SHOW_REPORT 和 QUERY 導出類型。
 --pg_dsn DSN : 設置線上導入時的 PostgreSQL 數據源。
 --pg_user name : 設置連接 PostgreSQL 的用戶名。
 --pg_pwd password : 設置連接 PostgreSQL 的用戶密碼。
 --count_rows : 在 TEST 方式下執行真實的數據行數統計。
 --no_header : 在導出文件中不添加 Ora2Pg 頭部信息。
 --oracle_speed : 用於測試 Oracle 發送數據的速度。不會真的處理或者寫入數據。
 --ora2pg_speed : 用於測試 Ora2Pg 發送轉換後的數據的速度。不會寫入任何數據。

四、ora2pg配置項說明

ora2pg不僅可以使用命令行的方式進行數據遷移,還可以通過自定義配置文件進行數據遷移配置。

ora2pg安裝目錄下有一個預設配置文件ora2pg.conf.dist,你可以通過學習配置項,來修改此配置文件的預設值,來達到你想要的業務需求。

image-20230921152758313

該文件是可自定義進行配置項覆蓋的,也就是說你可以在任意位置創建一個自定義配置文件,來增加自己的配置項,而不修改預設配置文件。

例如這樣:

image-20230921153444678

(一)、常用配置項

註意:配置項和值之間用tab鍵隔開

#設置Oracle主目錄:Oracle的安裝目錄(如果說是Oracle客戶端,就是客戶端的路徑)
ORACLE_HOME	D:\test\instantclient_21_11
#設置Oracle資料庫連接(數據源、用戶、密碼)連接遠程的,需要配置遠程資料庫ip和埠
ORACLE_DSN	dbi:Oracle:host=127.0.0.1;sid=orcl;port=1521
#填入Oracle用戶名、密碼
ORACLE_USER	username
ORACLE_PWD	pwd***

#配置你想遷移的內容,需要遷移什麼內容,就配置什麼內容,之間用“,”隔開
TYPE TABLE,VIEW,SEQUENCE,TRIGGER,FUNCTION,PROCEDURE

#導出SQL目標文件名稱
OUTPUT	user.sql
#導出SQL目標目錄
OUTPUT_DIR	C:\test

#配置你要導出的Oracle資料庫 不配置的情況下預設導出所有資料庫所有表
SCHEMA MY_Oracle_SCHEMA

#配置允許留下的表,這裡可以使用正則表達式,示例表示遷移表名包含“BI_”的資料庫表
ALLOW	.*BI_.*

#預設情況下,Oracle模式不會導出到PostgreSQL資料庫中,所有對象都是在預設的Pg命名空間下創建的。
#如果還要導出此架構併在此命名空間下創建所有對象,請將export_schema指令設置為1。
#這將使用預設的pg_catalog模式將導出SQL文件頂部的模式搜索路徑設置為schema指令中設置的模式名稱。
#如果要更改此路徑,請使用指令PG_SCHEMA。
EXPORT_SCHEMA	0
#在輸出文件開始時啟用/禁用CREATE SCHEMA SQL順序。它在預設情況下是啟用的,並關係TABLE導出類型。
CREATE_SCHEMA	1

#限制導出到哪一個架構
PG_SCHEMA	MY_PG_SCHEMA

#設置導出目標pg資料庫
PG_DSN	dbi:Pg:dbname=my_db;host=127.0.0.1;port=5432
#填入pg用戶名、密碼
PG_USER	pg_username
PG_PWD	pg_pwd***

(二)、配置項幫助文檔

更多配置項詳細說明,請詳見Ora2Pg官方文檔!

Ora2Pg : Migrates Oracle to PostgreSQL (darold.net)


需求實驗

實驗一:批量導出Oracle中特定表到PostgreSQL的一個特定schema下

(1)需求詳細說明

匹配Oracle資料庫中所有表名包含"BI_"的數據表遷移到PostgreSQL的test_schema下。(遷移表結構和數據)

(2)實驗過程

編寫ora2pg.conf.dist配置文件:

ORACLE_HOME	D:\test\instantclient_21_11
ORACLE_DSN	dbi:Oracle:host=127.0.0.1;sid=orcl;port=1521
ORACLE_USER	username
ORACLE_PWD	pwd***

TYPE	TABLE,INSERT

ALLOW	.*BI_.*

PG_SCHEMA	test_schema

OUTPUT	user.sql
OUTPUT_DIR	C:\test

執行遷移命令:

ora2pg -c C:\Users\zhao-XH\Desktop\ora2pg.conf.dist -d

image-20230921161639373

導出sql腳本成功

image-20230921161741168

在PostgreSQL客戶端分別執行表結構和數據插入sql腳本即可!

(3)問題總結

遷移過程中要註意,欄位的類型映射是否符合要求。官方給出的類型映射關係如下:

oracle類型 postgresql類型
date timestamp
long text
long raw bytea
clob text
nclob text
blob bytea
bfile bytea
raw bytea
rowid oid
float double precision
dec decimal
decimal decimal
double precision double precision
int integer
integer integer
real real
smallint smallint
binary_float double precision
binary_double double precision
tinestamp timestamp
xmltype xml
binary_integer integer
pls_integer integer
timestamp with time zone timestamp with time zone
timestamp with local time zone timestamp with time zone

如果類型映射不符合我們的要求,例如本次實驗,我想要NUMBER(1,0)類型進行精度映射,而ora2pg工具考慮到效率問題,預設關閉NUMBER(p,s) -> numeric(p,s)的映射關係。採用了取整型的方式,這一點很顯然不是我想要的。查閱官方文檔,我們可以看出,要想開啟NUMBER(p,s) -> numeric(p,s)的映射關係,需要將PG_INTEGER_TYPE配置項的值置為0即可!

官方文檔:

PG_NUMERIC_TYPE

If set to 1 replace portable numeric type into PostgreSQL internal type. Oracle data type NUMBER(p,s) is approximatively converted to real and float PostgreSQL data type. If you have monetary fields or don't want rounding issues with the extra decimals you should preserve the same numeric(p,s) PostgreSQL data type. Do that only if you need exactness because using numeric(p,s) is slower than using real or double.

PG_INTEGER_TYPE

If set to 1 replace portable numeric type into PostgreSQL internal type. Oracle data type NUMBER(p) or NUMBER are converted to smallint, integer or bigint PostgreSQL data type following the value of the precision. If NUMBER without precision are set to DEFAULT_NUMERIC (see below).

DEFAULT_NUMERIC

NUMBER without precision are converted by default to bigint only if PG_INTEGER_TYPE is true. You can overwrite this value to any PG type, like integer or float.

我們也可以設置配置項來進行手動映射。方法如下:

官方文檔:

If you're experiencing any problem in data type schema conversion with this directive you can take full control of the correspondence between Oracle and PostgreSQL types to redefine data type translation used in Ora2pg. The syntax is a comma-separated list of "Oracle datatype:Postgresql datatype". Here are the default list used:

DATA_TYPE       VARCHAR2:varchar,NVARCHAR2:varchar,NVARCHAR:varchar,NCHAR:char,DATE:timestamp(0)...

The directive and the list definition must be a single line.

看到上述說明,我們關註以下幾點

  1. 設置配置項時,你沒有必要全部粘貼預設映射再進行更改,只需要修改不符合你映射要求的數據類型即可!
  2. 所有類型映射配置必須在一行上聲明,中間用","隔開。

示範,例如官方文檔預設將DATE:timestamp(0),而我需要DATE:timestamp。同時我需要開啟精度映射。

那麼上述配置文件更改如下:

ORACLE_HOME	D:\test\instantclient_21_11
ORACLE_DSN	dbi:Oracle:host=127.0.0.1;sid=orcl;port=1521
ORACLE_USER	username
ORACLE_PWD	pwd***

TYPE	TABLE,INSERT

ALLOW	.*BI_.*

PG_SCHEMA	test_schema

OUTPUT	user.sql
OUTPUT_DIR	C:\test

PG_INTEGER_TYPE	0
DATA_TYPE	DATE:timestamp

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 對於最小化安裝的 Debian11.7 ,起初有一個問題給我造成了困擾:那就是當我使用 vi 編輯文本文件時,我無法通過鍵入“i”來切換到輸入模式,或者說,其實的確進入了輸入模式,但是底部行並沒有顯式進行提示,另外,我無法使用 Backspace 鍵來刪除字元,Delete 鍵是可以刪除字元的,不過 ...
  • 1. 概述 1.1. 複製解決的基本問題是讓一臺伺服器的數據與其他伺服器保持同步 1.2. 在源伺服器(source server)上,任何數據修改和數據結構變更的事件(event)都會被寫入日誌文件中 1.3. 副本伺服器從源伺服器上的日誌文件中讀取這些事件併在本地重放執行 1.4. 一個非同步處理 ...
  • 日常Bug排查系列都是一些簡單Bug排查。問題雖小,但經常遇到,瞭解這些問題,會讓我們少走點彎路,提升效率。說不定有些問題你遇到過哦:) Bug現場 業務開發同學突然問了筆者一個問題,從庫讀會不會沒有原子性?我下意識的反應怎麼可能,只要是遵守MySQL主從Replication協議的原子性至少是能夠 ...
  • 1. explain命令是什麼東西? explain 是MySql提供的SQL語句查詢性能的工具,是我們優化SQL的重要指標手段,要看懂explain返回的結果集就尤為重要 2. explain命令返回列解讀 + + + + + + + + + + + + + | id | select_type ...
  • 質量是產品的生命線,代碼檢查是軟體開發過程中至關重要的一環,它可以幫助我們發現並糾正潛在的錯誤,提高軟體質量,降低維護成本。 在袋鼠雲產品中也存在這個問題,由於離線數據開發人員 SQL 水平不一,導致代碼書寫混亂、SQL 代碼運行問題較多。本文將介紹在離線產品中如何利用 SQL 檢查規則規範化 SQ ...
  • 索引雖然能加速查詢,但是會降低寫操作的性能,以及耗費更多的磁碟空間。所以建立索引之前需要考慮是不是必要的。 ...
  • 什麼是機器學習(ML)? 它有什麼作用 機器學習(ML)是人工智慧(AI)的一個子集,通過演算法發現數據中的通用模式,並根據持續不斷的訓練來優化調整最終結果。ML模型從過去的經驗中學習,並根據已有的經驗進行預測。例如,現在的電商已不再會使用普遍性降價或優惠券等手段吸引客戶,取而代之的是根據每個客戶的歷 ...
  • 數據作為新型生產要素,已快速融入生產、分配、流通、消費和社會服務管理等各環節,深刻改變著生產方式、生活方式和治理方式。越來越多企業也在嘗試充分利用數據要素,開闢全新發展路徑,進一步實現業務價值提升。 在數字化轉型的大背景之下,白鯨開源旗下WhaleStudio與火山引擎ByteHouse依托於雙方完 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...