Skip to Content
Technical Articles
Author's profile photo Yohei Fukuhara

HANA SQL Snippets(検証時にたまに使うSQL)

HANAで検証時によく使うSQL。たまにしか使わず、すぐ忘れるため、メモしておきます。

 

Select と Insert

SOURCE_TABから抽出してそのままTARGET_TABへINSERT

INSERT INTO TARGET_TABL( SELECT * from SOURCE_TAB)

 

大量データ挿入

大量データを挿入するときに使います。System View の objectsをクロスジョインすることで8000万件くらいまで挿入できます。項目は乱数を入れています。

DROP TABLE "TEST_TAB";
CREATE COLUMN TABLE "TEST_TAB" ("Id" INTEGER, 
                                "fld001" INTEGER,
                                "fld002" INTEGER,
                                "fld003" INTEGER);

insert into "TEST_TAB" (
select top 100000
 CAST(ROW_NUMBER()  OVER() AS INTEGER) AS "Id",
 round(rand(), 0, ROUND_HALF_UP) as "fld001",
 round(rand()*100, 0, ROUND_HALF_UP) as "fld002",
 round(rand()*30000, 0, ROUND_HALF_UP) as "fld003"
 from objects cross join objects
);

 

WITH構文

WITHを使って柔軟なSQL書けます

with X as (select id
 from TEST1)
select id 
from X

重ねて書く場合(直列)

WITH y
     AS (WITH x
              AS (SELECT id
                  FROM   test1)
         SELECT id
          FROM   x)
SELECT id
FROM   y 

 

重ねて書く場合(並列)。確認していないけどあっているはず。ちなみにここのyのSQLのソーステーブルにtest1を使うことができます。

WITH x
     AS (SELECT id
         FROM   test1),
     y
     AS (SELECT id
         FROM   test2)
SELECT x.id
FROM   x
       INNER JOIN y
               ON x.id = y.id 

 

テーブル定義コピー

LIKEオプションを使ってテーブル定義をコピー。検証時によくやります。”WITH DATA” オプションをつければ、データもコピーしてくれます。

CREATE TABLE "TARGET_TAB" LIKE "SOURCE_TAB";

Python使えるならばhana_mlパッケージを使うのもおすすめです。

以下のノートに参考になるSQLが詰まっています。

1969700 – SQL Statement Collection for SAP HANA

 

 

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.