SAP HANA與MySQL/Oracle的部分區別

2022-01-30 紀先生筆記

hana的使用是次意外,我們做的產品是要給不同的客戶使用,那麼就會有不同的要求,所以我們也是在開發階段就適配了多種資料庫, 我平時開發中最多用到的是MySQL,其次是oracle,還有PostgreSQL等,但是我從沒有接觸過有用SAP HANA的客戶,黑天鵝事件出現了 ,這次就遇到了。

OK,這次就把hana的使用遇到的個別性問題做個整理下。

客戶的需求shi是想要把資料庫從mysql轉到hana上去,我這邊要去驗證其可行性,按照下面步驟處理的

初始化工具

初始化表結構腳本

初始化表數據腳本

運行服務

總結

之前只聽說過hana是一個內存資料庫,可以提供很高效的數據操作,但是費用也很高,一般的公司用不起,都是用redis緩存重要的數據,在我的印象中用hana的公司就像一個用戴森吹風機的人一樣,哇,真有錢。驚訝歸驚訝 客戶就是上帝 活還是要幹的。

我這邊拿到測試的帳號密碼是這樣的

HANA伺服器IP:192.xxx.xx.xx

登錄帳戶:SYSTEM   

密碼:Ajisun1234

埠:35244

第一次接觸都不知道怎麼登錄,百度一番之後可以用SAP HANA Studio登錄,但是呢這個客戶端下載安裝登錄折騰了兩天才搞定,這個帳號依然沒有登錄成功. 因為我這個埠不是默認的,我下載的studio只能使用默認的埠,所以最終還是放棄了studio。後面通過詢問了解hana的同事 使用了DBeaver(  https://dbeaver.io/) 還支持mac,後面就下載了這個客戶端開啟了han之旅。

0. 一些簡單的sql 操作

hana的每個用戶都有自己默認的schema,所以執行的sql是默認的schema,想操作其他schema需要schema.table的方式(和oracle一樣)

CREATE USER ajisun PASSWORD Ajisun1234 NO FORCE_FIRST_PASSWORD_CHANGE;  
drop schema ajisun
GRANT CREATE SCHEMA TO username

hana的sql大體上是mysql/oracle一樣的,下面列舉一些差異性問題:

1. 分頁查詢功能

mysql

SELECT * FROM  user LIMIT 0 , 10 SELECT * FROM  user LIMIT 10 offset 0

hana

SELECT * FROM  user LIMIT 10 offset 0


2. 批量操作

mysql

insert into user(id,name) values('ss'),('ss'),('ss')..

hana

insert into user(id,name) select t.* from (select '張三' from dummy union allselect '李四' from dummy union allselect '王五' from dummy ) t

3. 序列問題

hana和oracle一樣都是有序列的,ID可以通過序列獲取oracl

oracle

SELECT user_S.nextval from dual

hana

SELECT user_S.nextval from dummy


4. 索引相關

同一個欄位建兩個不同名字的索引,mysql是支持的,hana不支持,相當於重複建索引了


5. TINYINT數據類型

mysql 默認是無符號的範圍是-128~127,帶符號0~255

hana 沒有選擇,範圍是0~255

6. alter修改varchar的長度

hana資料庫中varchar長度只能增加,不能減少

相關焦點

  • 「SAP S/4HANA 升級你準備好了嗎?」Part 3 升級準備和注意事項
    推薦您閱讀 SAP 社區的一篇關於這個主題的博文(https://blogs.sap.com/2017/02/15/sap-s4hana-system-conversion-custom-code-adaptation-process/)您還可以在 SAP Help Portal 的 SAP S/4HANA 產品頁上找到「自定義代碼遷移指南」,獲得更多有用信息
  • SAP Fiori系統配置之 SAP Gateway
    • default_host/sap/es/cockpit• default_host/sap/es/saplink• default_host/sap/es/search• default_host/sap/es/ina• default_host/sap/bc/webdynpro/sap/ESH_ADMIN_UI_COMPONENT
  • 1分鐘快速搭建MySQL主從資料庫
    工具集是一個集中了多種工具的合集,可以理解為是DBA的工具箱,本文介紹利用其中的mysqlreplicate工具來快速搭建MySQL主從環境。HE1:192.168.1.248 slaveHE3:192.168.1.250 master[root@HE1 ~]# tar xvf mysql-utilities-1.5.4.tar.gz[root@HE1 ~]# cd mysql-utilities-1.5.4[root@HE1 mysql-utilities-1.5.4
  • ABAP平臺(第一部分:自SAP Netweaver開始的演進)
    內容將分成三篇來發布:第一部分:自SAP Netweaver開始的演進第二部分:新的編程模型第三部分:Basis需要知道的新變化以下開始第一部分。SAP kernel是任何一個SAP系統的核心組件。它包括了SAP伺服器上的可執行文件,用於進行系統連接,以及執行SAP程序。
  • 如何在Kubernetes上部署MySQL資料庫
    Pod -> PVC-> PVOperators將資料庫部署到Kubernetes        https://github.com/oracle/mysql-operator        https://github.com/CrunchyData/postgres-operator        https://github.com
  • Oracle一些基礎語法(六)
    1.給角色授權 給角色授予權限和給用戶授權沒有太多區別,但是要注意,系統權限的unlimited tablespace和對象權限的with grant option選項是不能授予角色的。塊結構示意圖 pl/sql塊由三個部分構成:定義部分,執行部分,例外處理部分。
  • MySQL-5.7.28安裝中的部分問題及解決方案
    無法將「mysql」項識別為cmdlet、函數、腳本文件或可運行程序的名稱。解決方案:將鍵入的「mysql」修改為「.\mysql」進入mysql後修改密碼:(在mysql中進行)        1.使用資料庫         mysql> use mysql        2.更新密碼(密碼中不允許出現中文)        mysql> update user set authentication_string=password('新密碼')  where user
  • ORACLE 資料庫維護
    在 oracle 資料庫的參數文件(initSid.ora)中指定控制文件的位置。如果部分控制文件損壞,可以在參數文件中去掉相應的控制文件,即可啟動資料庫。每次資料庫物理結構發生改變時,必須及時備份控制文件。
  • MySQL 的變量分類總結
    > show variables like '%connect_timeout%'; mysql> show local variables like '%connect_timeout%';mysql> show session variables like '%connect_timeout%';mysql> show global
  • Linux 下安裝Oracle
    id oracleuid=500(oracle) gid=501(oinstall)groups=501(oinstall),500(dba)[root@db_master /]# passwd oracleChanging password for user oracle.
  • MySQL 入門常用命令大全
    [tablename] FROM [username]@[host];# 示例mysql> REVOKE SELECT ON *.* FROM lvlv@'%';mysql> REVOKE ALL ON *.* FROM 'lvlv'@'%';說明:(1)privilege, databasename, tablename – 同授權部分
  • Linux軟體安裝--二進位發布包安裝、rpm發布包安裝(案例:jdk和mysql安裝)
    示例:二進位發布包安裝jdk1.獲取安裝包1).直接從linux網上下載安裝包 --> wget https://download.oracle.com/otn-pub/java/jdk/13+33/5b8a42f3905b406298b72d750b6919f6/jdk-13_linux-x64_bin.tar.gz在linux編輯窗口用alt+p 打開sftp插件:put
  • Oracle 19c之RPM安裝
    19c相關技術文檔,https://docs.oracle.com/en/database/oracle/oracle-database/19/index.html對我來說,12c needed by oracle-database-preinstall-19c-1.0-1.el7.x86_64    compat-libstdc++-33 is needed by oracle-database-preinstall-19c-1.0-1.el7.x86_64    glibc-devel is needed by oracle-database-preinstall
  • 驚呆,一條sql竟然讓oracle崩潰了
    application1 使用的 orm 框架是 mybatis,為了減少應用和資料庫的交互,使用了oracle 的 merge 語句。這條 sql 執行後,我截取部分 oracle 的日誌,如下:圖中可以看到 oracle 報了 ORA-07445 錯誤。分析日誌後發現,sql 綁定變量達到了 79010 個,而 oracle 是不允許超過 65535 個的。
  • mysql安裝圖文教程+安裝包下載
    但對於剛剛接觸mysql資料庫伺服器的朋友來說,似乎還很陌生,為大家詳細介紹一下mysql安裝圖解教程,以便初學者能夠更好的掌握此資料庫管理系統的操作。在安裝mysql資料庫之前,需要去mysql官網下載mysql安裝包,然後在進行安裝。下面一起來看看mysql安裝圖解的詳細介紹。
  • oracle常用命令,適合新手
    a、啟動ORACLE系統oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、關閉ORACLE系統oracle>svrmgrlSVRMGR>connect internal
  • 靜默安裝Oracle也沒那麼恐怖
    password for user oracle.:oinstall /u01/app/[root@ORATEST ~]# chmod -R 775 /u01/app/配置環境變量[root@ORATEST ~]# su - oracle[oracle@ORATEST ~]$ vi /home/oracle/.bash_profile vi /home/oracle
  • Oracle的SQLPLUS常用命令
    一、Oracle的啟動和關閉  1、在單機環境下  要想啟動或關閉ORACLE系統必須首先切換到ORACLE用戶,如下  su - oracle    a、啟動Oracle系統  oracle>svrmgrl  SVRMGR>connect internal  SVRMGR>startup  SVRMGR>quit    b、關閉Oracle系統  oracle>svrmgrl  SVRMGR>connect internal