Technology Blog Posts by SAP
cancel
Showing results for 
Search instead for 
Did you mean: 
Fukuhara
Product and Topic Expert
Product and Topic Expert
1,285
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