SnowConvert AI - Oracle - Oracle組み込みデータ型¶
拡張データ型¶
説明¶
Oracle Database 12_c_ 以降、
VARCHAR2、NVARCHAR2、RAWデータ型に最大サイズ32767バイトを指定できます。データベースがこの新しい最大サイズをサポートするかどうかは、初期化パラメーターMAX_STRING_SIZEをセットすることで制御できます。宣言されたサイズが4000バイトを超える
VARCHAR2またはNVARCHAR2データ型、または宣言されたサイズが2000バイトを超えるRAWデータ型は、 拡張 データ 型 です。(Oracle SQL 言語リファレンス拡張データ型)。
Oracleでは、データベースの最大文字列サイズを STANDARD から EXTENDED に増やすことができますが、Snowflakeにはこの機能に 相当するものがありません。
したがって、 VARCHAR2 、 NVARCHAR2 、 RAW 拡張データ型はSnowflakeではサポートされておらず、通常の VARCHAR2 、 NVARCHAR2 、 RAW データ型と同様に変換されます。詳しくは 文字データ型 と RAWデータ型 を確認してください。
既知の問題¶
1.MAX STRING SIZE は認識されません¶
ALTER SYSTEM SET MAX_STRING_SIZE='EXTENDED';
SnowConvert で解析されていません。
JSON データ型¶
説明¶
Oracle Databaseは、トランザクション、インデックス、宣言型クエリ、ビューなど、リレーショナルデータベースの機能で JSON をネイティブにサポートしています。リレーショナルデータとは異なり、 JSON データは、データを定義するスキーマを必要とせずに、データベースに格納し、インデックスを作成し、クエリを実行することができます。(Oracle SQL 言語リファレンス JSON データ型)。
The JSON data types are transformed to VARIANT to emulate the Oracle behavior.
サンプルソースパターン¶
テーブル作成の列としての JSON データ型¶
Oracle¶
結果¶
COL1 |
|---|
{"id":1,"content":"json content"} |
{"stringdata":"this is a text","number":1,"numberNeg":-1,"booleanT":true,"booleanGF":false,"nullvalue":null,"object":{"1":1,"2":2},"array":[1,2,3]} |
{"id":4} |
Snowflake¶
警告
JSONデータ挿入が正しく処理されていません。回避策については、 推奨事項 セクションを確認してください。
既知の問題¶
1.JSON データ挿入
JSON データの挿入が SnowConvert によって正しく処理されていません。
2.JSON オブジェクト操作
JSONオブジェクト(列、変数、パラメーター)の使用法は、SnowConvert AIによって正しく変換されていません。回避策については、 推奨事項 セクションを確認してください。
推奨事項¶
1.JSON データ型 翻訳の回避策¶
JSON データ型は VARIANT に変換されるため、Snowflake PARSE_JSON 関数を使用して情報を形式化できます。このアプローチでは、Oracleと同様の構文を使用して、Snowflakeで JSON データの保存、クエリ、操作を行うことができます。
Oracle¶
結果1¶
JSON_SERIALIZE(JSON_COLUMN) |
|---|
{"id":1,"content":"json content"} |
{"id":2,"content":{"header":"header text one","content":"content text one"}} |
{"id":3,"content":{"header":"header tex two","content":"content text two"}} |
結果2¶
'ID:' JT.JSON_COLUMN.ID |
'HEADER:' UPPER(JT.JSON_COLUMN.CONTENT.HEADER) |
|---|---|
ID:1 |
HEADER: |
ID:2 |
HEADER: "HEADER TEXT ONE" |
ID:3 |
HEADER: "HEADER TEX TWO" |
Snowflake¶
結果1¶
JSON_COLUMN |
|---|
{ "content": "json content", "id":1} |
{ "content": { "content": "content text one", "header": "header text one" }, "id":2} |
{ "content": { "content": "content text two", "header": "header tex two" }, "id":3} |
結果2¶
'ID: ' JT.JSON_COLUMN:ID |
'HEADER: ' UPPER(JT.JSON_COLUMN:CONTENT:HEADER) |
|---|---|
ID:1 |
|
ID:2 |
HEADER: HEADER TEXT ONE |
ID:3 |
HEADER: HEADER TEX TWO |
注釈
PARSE_JSON 関数を使用するには、 VALUES 句の代わりに INSERT INTO 引数として SELECT を使用する必要があります。
注釈
JSON オブジェクトのプロパティにアクセスするには、演算子'.'の代わりに':'を使用します。どちらのエンジンでも、いくつかのレベルのネストが可能です。
関連 EWIs¶
SSC-EWI-0073:機能的同等性レビューを保留中
LONG データ型¶
LONG列は、最大2ギガバイト-1、または231-1バイトを含む可変長の文字列を格納します。LONG列は、VARCHAR2列の多くの特徴を持っています。長い文字列を格納するために、LONG列を使用することができます。LONG値の長さは、コンピュータの利用可能なメモリによって制限される場合があります。(Oracle SQL 言語リファレンスLongデータ型)
サンプルソースパターン¶
テーブル作成時のLong¶
Oracle¶
Snowflake¶
Long列からのデータ取得¶
Oracle¶
結果¶
LONG_COLUMN |
|---|
これはテキストです |
Snowflake¶
結果¶
LONG_COLUMN |
|---|
これはテキストです |
既知の問題¶
1.long(Oracle)とvarchar(Snowflake)の最大長は異なります¶
Oracleドキュメント によると、Long列は最大2ギガバイトのデータを格納できますが、 Snowflakeのvarchar は16MBに制限されています。
2.Long列のキャスト¶
The Long data type can only be cast to a CLOB data type by using the TO_LOB function. This function only works when used in the select list of a subquery in an INSERT statement. Consider the following sample
Oracle¶
警告
ターゲットテーブル列のデータ型が CLOB と異なる場合、Oracleはデータを挿入しようとするとnull値を挿入したり、エラーを表示したりすることがあります。
関連 EWIs¶
SSC-FDM-0006:数値型の列はSnowflakeでは同様の動作をしない場合があります。
RAWとLONG RAWデータ型¶
説明¶
RAWとLONGRAWデータ型は、異なるシステム間でデータを移動する際にOracleデータベースが明示的に変換しないデータを格納します。これらのデータ型はバイナリデータまたはバイト文字列を対象としています。(Oracle SQL 言語参照Rowデータ型およびLong Rawデータ型)
サンプルソースパターン¶
テーブル作成時のRawとLong Raw¶
Oracle¶
Snowflake CREATE OR REPLACE TABLE raw_table¶
RawおよびLong Raw列からのデータ取得¶
Oracle¶
結果¶
ID |
RAW_COLUMN |
LONG_RAW_COLUMN |
|---|---|---|
1 |
ªº««««© 2 B7 :ºººº«ºª»¬ßý |
|
2 |
ªªªªª |
«««««««««««««««««««ªººªºººººººººº |
3 |
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª |
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª |
Snowflake¶
結果¶
ID |
RAW_COLUMN |
LONG_RAW_COLUMN |
|---|---|---|
1 |
ªº««««© 2 B7 :ºººº«ºª»¬ßý |
|
2 |
ªªªªª |
«««««««««««««««««««ªººªºººººººººº |
3 |
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª |
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
関連 EWIs はありません。
数値データ型¶
説明¶
Oracle Databaseの数値データ型は、正と負の固定小数点数と浮動小数点数、ゼロ、無限大、および演算の未定義の結果である「数値ではない」値、
NANを格納します。(Oracle Language Reference Numeric Data Types)
算術演算に関する注意事項¶
数値データ型に対して行われるすべての操作は、内部的には数値として保存されることに注意してください。さらに、実行された操作によっては、Snowflake内での中間値の格納方法に関連するエラーが発生する可能性があります。詳細については、 Snowflakeの中間数値に関するSnowflakeの投稿 を参照してください。
FLOAT データ型¶
説明¶
FLOATデータ型はNUMBERのサブタイプです。精度の有無は指定可能で、精度はNUMBERと同じ定義を持ち、1から126の範囲で指定できます。スケールは指定できませんが、データから解釈されます。(Oracle言語リファレンスFloatデータ型)
警告
Notes on arithmetic operations
数値データ型に対して行われるすべての操作は、内部的に数値として保存されることに注意してください。さらに、実行した操作によっては、Snowflake内での中間値の保存方法に関連したエラーが発生する可能性があります。詳細情報については、 Snowflakeの中間数値に関するSnowflakeの投稿 をご確認ください。
サンプルソースパターン¶
以下のテーブルとその挿入例をご覧ください。
テーブル作成時のFloatデータ型¶
Oracle¶
Snowflake¶
FLOAT¶
精度のない FLOAT データ型に関しては、OracleとSnowflakeで違いはありません。
Oracle¶
結果¶
col1 |
|---|
100.55555 |
1.9 |
Snowflake¶
結果¶
col1 |
|---|
100.55555 |
1.9 |
FLOAT ( p )¶
FLOAT データ型に精度 (p) が指定されている場合、クエリ結果が等価にならないことがあります。若干の四捨五入の違いがあります。
Oracle¶
結果¶
col2 |
|---|
1.2 |
7.9 |
13 |
120 |
col3 |
---------------------------------------------------------------------------------------------------- |
1111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000 |
Snowflake¶
結果¶
col2 |
|---|
1.23 |
7.89 |
12.79 |
123.45 |
col3 |
---------------------------------------------------------------------------------------------------- |
1111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
既知の問題¶
1.精度を持つ FLOAT データ型¶
FLOAT データ型に精度がある場合、クエリ結果に若干の四捨五入の違いが生じることがあります。
関連 EWIs¶
関連 EWIs はありません。
NUMBER データ型¶
説明¶
NUMBERデータ型は、ゼロ、1.0 x 10-130から1.0 x 10126を含まない絶対値の正負の固定数を格納します。値の絶対値が1.0 x 10126以上の算術式を指定すると、Oracleはエラーを返します。NUMBERの各値には1~22バイトが必要です。(Oracle言語リファレンス数値データ型)。
NUMBER データ型は、次の形式 NUMBER(p, s) (両方のパラメーターはオプション)を使用して指定できます。
pは 精度 または有効な小数点の最大数で、最上位桁は左端の0でない桁、最下位桁は右端の既知の桁です。精度の範囲は0から38までです。sは スケール または小数点から最下位桁までの桁数です。スケールの範囲は-84から127までです。
Oracleでは、精度を指定しない場合(NUMBER または NUMBER(*) を使用)、列が「未定義の精度」として作成されます。これは、Oracleが動的に値を格納し、その列内に任意の数値を格納できることを意味します。Snowflakeはこの機能をサポートしていません。そのため、 NUMBER(38, 18)に変更され、最も多様な数値を保存できるようになります。
警告
Notes on arithmetic operations
数値データ型に対して行われるすべての操作は、内部的には数値として保存されることに注意してください。さらに、実行された操作によっては、Snowflake内での中間値の格納方法に関連するエラーが発生する可能性があります。詳細については、投稿 Snowflakeの中間数値に関するSnowflakeの投稿 を参照するか、機能的同等性メッセージ SSC-FDM-0006 を確認してください。
サンプルソースパターン¶
以下のテーブルとその挿入例をご覧ください。
テーブル作成時の数値データ型¶
Oracle¶
Snowflake¶
NUMBER (デフォルトケース)¶
精度とスケールが指定されていない場合、デフォルト値は利用可能な最大値 NUMBER(38, 127) となります。デフォルトケースの現在の変換は NUMBER(38,19) です。
警告
Oracleでは、精度もスケールも定義しないと、デフォルトで「未定義の精度とスケール」になります。入力を「受信したとおりに」保存することで動作します。つまり、整数と浮動小数点数の両方を処理できます。ここでは、 38, 18 を使って、整数に20を使い、浮動小数点数に18を残すことで、その両方をカバーしようとしています。
Oracle¶
結果¶
col1 |
|---|
100 |
Snowflake¶
結果¶
col1 |
|---|
100.0000000000000000000 |
NUMBER ( p )¶
この場合、精度は小数点の左側の数値の桁数を指定します。
Oracle¶
結果¶
col2 |
|---|
2 |
Snowflake¶
結果¶
col2 |
|---|
2 |
NUMBER ( p, s ) p > s¶
s が p よりも低い場合、精度はその数値が持ちうる桁数を指定します。スケールは小数点の右側の有効桁数を指定しますので、小数点の左側の桁数は指定されたスケールに依存します。
Oracle¶
結果¶
col3 |
|---|
12345.12345 |
Snowflake¶
結果¶
col3 |
|---|
12345.12345 |
NUMBER ( p, -s )¶
負のスケールは、小数点の左側の有効桁数で、最下位桁を含みません。負のスケールの場合、実際のデータは小数点の左側の指定された桁数に丸められるため、最下位桁は小数点の左側になります。現在の変換は、負のスケールを削除することです。
Oracle¶
結果¶
col4 |
|---|
16400 |
17600 |
Snowflake¶
結果¶
col4 |
|---|
16431 |
17551 |
NUMBER ( p, s ) s > p¶
スケールが精度を上回る場合は、以下の点を考慮してください。
挿入される数値は、小数点の左側に有効桁数がない可能性があります。使用可能なのは0のみです。
小数点の右側の1桁目は0でなければなりません。
精度は小数点の右側の最大有効桁数を指定します。
Oracle¶
結果¶
col5 |
|---|
0.00009 |
0.00002 |
0.01268 |
Snowflake¶
結果¶
col5 |
|---|
0.00009 |
0.00002 |
0.01268 |
既知の問題¶
1.スケール値がSnowflakeで許容される最大値を超えています¶
Snowflakeで許容される最大スケール(37)を超えるスケールを指定した場合、18に変更されます。この件に関する詳しい情報は、 SSC-FDM-0006 ドキュメントをご参照ください。
2.負のスケール¶
Snowflakeは負のスケールを許可しないので、削除されます。これは機能的非同等性を引き起こす可能性があります。この問題についての詳細は SSC-EWI-0R0092 のドキュメントをご覧ください。
推奨事項¶
1.NUMBER データ型操作のための UDF¶
算術演算を実行するときに次の UDF を使用してこれらの操作を手動で移行し、記載されている問題を回避することができます。
UDF¶
関連 EWIs¶
SSC-EWI-OR0092 数値データ型の負のスケールが出力から削除されました。
SSC-FDM-0006:数値型の列はSnowflakeでは同様の動作をしない場合があります。
SSC-FDM-OR0010 数値データ型の精度をスケールに合わせて小さくしました。
浮動小数点数¶
説明¶
浮動小数点数は、小数点が1桁目から最後の桁までのどこにあってもよいし、小数点がまったくないこともあります。指数は、例えば1.777 e-20のように、範囲を広げるために数値の後に続けて使用することもできます。小数点の後の桁数が制限されていないため、スケール値は浮動小数点には適用できません。2進浮動小数点数は、2進精度(桁0と1)を使用して格納されます。(Oracle Language Reference Floating-Point Numbers)
BINARY_DOUBLE¶
説明¶
BINARY_DOUBLEは64ビットの、倍精度浮動小数点数データ型です。BINARY_DOUBLEの各値は8バイト必要です。BINARY_DOUBLE列では、浮動小数点数はバイナリ精度です。バイナリ浮動小数点数は、特別な値infinityおよびNaN(数値ではない)をサポートしています。(Oracle言語リファレンスBinary_Doubleデータ型)
浮動小数点数の指定は次の範囲内であれば可能です。
正の有限値の最大値 = 1.79769313486231E+308
正の有限値の最小値 = 2.22507485850720E-308
サンプルソースパターン¶
以下のテーブルとその挿入例をご覧ください。
テーブル作成時のバイナリダブル¶
Oracle¶
Snowflake¶
注釈
「NaN」 は _ Not a Number _ を意味します。この値はOracleでは BINARY_DOUBLE データ型によって、Snowflakeでは FLOAT データ型によって許可されています。
BINARY_DOUBLE -> FLOAT¶
BINARY_DOUBLE データ型はSnowflakeではサポートされていないため、 FLOAT に変換されます。
Oracle¶
結果¶
col1 |
|---|
0 |
179769313486231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
NaN |
Snowflake¶
結果¶
col1 |
|---|
0 |
179769313486231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
NaN |
既知の問題¶
1.BINARY_DOUBLE データ型はSnowflakeではサポートされていません¶
BINARY_DOUBLE データ型はSnowflakeではサポートされていないため、 FLOAT に変換されます。
関連 EWIs¶
関連 EWIs はありません。
BINARY_FLOAT¶
説明¶
BINARY_FLOATは32ビットの、単精度浮動小数点数データ型です。BINARY_FLOATの各値は4バイト必要です。BINARY_FLOAT列では、浮動小数点数はバイナリ精度です。バイナリ浮動小数点数は、特別な値infinityおよびNaN(数値ではない)をサポートしています。(Oracle言語リファレンスBinary_Floatデータ型)
浮動小数点数の指定は次の範囲内であれば可能です。
正の有限値の最大値 = 3.40282E+38F
正の有限値の最小値 = 1.17549E-38F
サンプルソースパターン¶
以下のテーブルとその挿入例をご覧ください。
テーブル作成時のバイナリフロート¶
Oracle¶
Snowflake¶
注釈
「NaN」 は _ Not a Number _ を意味します。この値はOracleでは BINARY_FLOAT データ型によって、Snowflakeでは FLOAT データ型によって許可されています。
BINARY_FLOAT -> FLOAT¶
BINARY_FLOAT データ型はSnowflakeではサポートされていないため、 FLOAT に変換されます。
Oracle¶
結果¶
col1 |
|---|
0 |
340282001837565600000000000000000000000 |
NaN |
Snowflake¶
結果¶
col1 |
|---|
0 |
340282000000000000000000000000000000000 |
NaN |
既知の問題¶
1.BINARY_FLOAT データ型はSnowflakeではサポートされていません¶
BINARY_FLOAT データ型はSnowflakeではサポートされていないため、 FLOAT に変換されます。
関連 EWIs¶
関連 EWIs はありません。
日時および間隔データ型¶
日時データ型は、
DATE、TIMESTAMP、TIMESTAMPWITHTIMEZONE、TIMESTAMPWITHLOCALTIMEZONEです。日時データ型の値はdatetime値と呼ばれることもあります。間隔データ型はINTERVALYEARTOMONTHおよびINTERVALDAYTOSECONDです。間隔データ型の値はinterval値と呼ばれることもあります。(Oracle SQL Language Reference Datetime and Interval Data Types)
DATE データ型¶
説明¶
Oracleの日付データ型は日付と時刻の両方の情報を格納しますが、Snowflakeの日付データ型は日付情報のみを格納します。(Oracle SQL 言語リファレンス日付データ型)
The default transformation for Oracle DATE is to Snowflake TIMESTAMP. You can add the disableDateAsTimestamp flag (SnowConvert AI Command Line Interface) or disable the Transform Date as Timestamp setting (SnowConvert AI desktop application) to transform the DATE type to TIMESTAMP. Keep in mind that Snowflake DATE only stores date information and Oracle stores date and time information, if you want to avoid losing information you should transform DATE to TIMESTAMP.
注釈
重要な四捨五入の動作の違い:date/timestamp データ型と秒を含む期間との間の操作を実行する場合、Oracle は秒を丸めず、指定された精度を保持しますが、Snowflake は秒を最も近い整数秒に丸めます。この四捨五入の動作の違いが、異なる結果につながることがあります。
サンプルソースパターン¶
テーブル作成時の日付¶
Oracle¶
--disableDateAsTimestamp フラグなし、または「日付をタイムスタンプとして変換」設定が有効になっているSnowflake¶
--disableDateAsTimestamp フラグ付き、または「日付をタイムスタンプとして変換」設定が無効になっているSnowflake¶
日付列からのデータの取得¶
Oracle¶
結果¶
DATE_COL |
|---|
2010-10-10 00:00:00.000 |
Snowflake¶
結果¶
DATE_COL |
|---|
2010-10-10 00:00:00.000 |
disableDateAsTimestamp フラグの結果¶
DATE_COL |
|---|
2010-10-10 |
既知の問題¶
1.言語によって入力形式と出力形式が異なる場合があります¶
Snowflakeでは、 _ DATE_ の入力形式と出力形式は、 _ DATE_INPUT_FORMAT_ と _ DATE_OUTPUT_FORMAT_ のセッション変数に依存します。DATE_INPUT_FORMAT は、ユーザーがテキストで日付を追加する際に特定の形式を使用するよう強制するため、挿入に失敗することがあります。これらの変数は以下の構文で変更できます。
関連 EWIs¶
SSC-FDM-OR0042:Timestamp に変換された Date 型の動作が異なる
INTERVAL DAY TO SECOND データ型¶
説明¶
INTERVAL DAY TO SECOND は、期間を日、時、分、秒の単位で格納します。(Oracle SQL 言語リファレンス INTERVAL DAY TO SECOND データ型)
By default, there is no equivalent for this data type in Snowflake and it is transformed to VARCHAR.
注釈
Preview Feature: When the --UseIntervalDatatype preview flag is enabled, Oracle INTERVAL DAY TO SECOND columns are preserved as native Snowflake INTERVAL DAY TO SECOND types. See the Interval Data Types translation reference for complete transformation details.
サンプルソースパターン¶
テーブル作成時の日~秒の間隔¶
Oracle¶
Snowflake¶
The Interval value is transformed to a supported Snowflake format and then inserted as text inside the column. Since Snowflake does not support Interval as a data type, it is only supported in arithmetic operations. To use the value, it needs to be extracted and used as an Interval constant (if possible).
オリジナルのOracle値: INTERVAL '1 2:3:4.567' DAY TO SECOND
Snowflake列に格納された値: '1d, 2h, 3m, 4s, 567ms'
Snowflake間隔定数としての値: INTERVAL '1d, 2h, 3m, 4s, 567ms'
日~秒の間隔列からのデータの取得¶
Oracle¶
結果¶
INTERVAL_DAY_COL1 |
INTERVAL_DAY_COL2 |
|---|---|
1 2:3:4.567 |
|
1 2:3:4.567 |
Snowflake¶
結果¶
INTERVAL_DAY_COL1 |
INTERVAL_DAY_COL2 |
|---|---|
1日、2時間、3分、4秒、56ミリ秒 |
|
1日、2時間、3分、4秒、56ミリ秒 |
既知の問題¶
1.算術演算のみがサポートされています¶
Snowflake間隔にはいくつかの制限があります。DATE または TIMESTAMP と 間隔定数 間の算術演算のみがサポートされており、その他のシナリオはサポートされていません。
関連 EWIs¶
SSC-EWI-0036:データ型が別のデータ型に変換されました。
INTERVAL YEAR TO MONTH データ型¶
説明¶
INTERVAL YEAR TO MONTH は、 YEAR と MONTH の日付時刻フィールドを使用して期間を保存します。Snowflakeには同等のものがないため、Varcharに変換されます(Oracle SQL 言語リファレンス INTERVAL YEAR TO MONTH データ型)
By default, there is no equivalent for this data type in Snowflake and it is transformed to VARCHAR.
注釈
Preview Feature: When the --UseIntervalDatatype preview flag is enabled, Oracle INTERVAL YEAR TO MONTH columns are preserved as native Snowflake INTERVAL YEAR TO MONTH types. See the Interval Data Types translation reference for complete transformation details.
サンプルソースパターン¶
テーブル作成時の年~月の間隔¶
Oracle¶
Snowflake¶
The Interval value is transformed to a supported Snowflake format and then inserted as text inside the column. Since Snowflake does not support Interval as a data type, it is only supported in arithmetic operations. To use the value, it needs to be extracted and used as an Interval constant (if possible).
オリジナルのOracle値: INTERVAL '1-2' YEAR TO MONTH
Snowflake列に格納された値: '1y, 2m'
Snowflake間隔定数としての値: INTERVAL '1y, 2m'
年~月の間隔列からのデータの取得¶
Oracle¶
結果¶
INTERVAL_YEAR_COL1 |
INTERVAL_YEAR_COL2 |
|---|---|
1-2 |
|
1000-11 |
Snowflake¶
結果¶
INTERVAL_YEAR_COL1 |
INTERVAL_YEAR_COL2 |
|---|---|
1y, 2m |
既知の問題¶
1.算術演算のみがサポートされています¶
Snowflake間隔にはいくつかの制限があります。DATE または TIMESTAMP と 間隔定数 間の算術演算のみがサポートされており、その他のシナリオはサポートされていません。
関連 EWIs¶
SSC-EWI-0036:データ型が別のデータ型に変換されました。
TIMESTAMP データ型¶
説明¶
TIMESTAMP データ型は、 DATE データ型を拡張したものです。DATE データ型の年、月、日に加え、時、分、秒の値が格納されます。(Oracle SQL 言語参照タイムスタンプデータ型)
OracleとSnowflakeの TIMESTAMP データ型は同じ精度範囲(0~9)ですが、デフォルト値が異なります。Oracleではデフォルトの精度値は6で、Snowflakeでは9です。
ただし、挿入された値がセット精度を超えた場合の動作には違いがあります。Oracleは超過した小数点を切り上げますが、Snowflakeは値を切り詰めるだけです。
サンプルソースパターン¶
テーブル作成時のタイムスタンプ¶
Oracle¶
Snowflake¶
タイムスタンプ列からのデータの取得¶
Oracle¶
結果¶
TIMESTAMP_COL1 |
TIMESTAMP_COL2 |
|---|---|
2010-10-10 12:00:00.000 |
2010-10-10 12:00:00.000 |
Snowflake¶
結果¶
TIMESTAMP_COL1 |
TIMESTAMP_COL2 |
|---|---|
2010-10-10 12:00:00.000 |
2010-10-10 12:00:00.000 |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
関連 EWIs はありません。
TIMESTAMP WITH LOCAL TIME ZONE データ型¶
説明¶
TIMESTAMP WITH TIME ZONE と異なる点は、データベースに格納されたデータはデータベースのタイムゾーンに正規化され、タイムゾーン情報は列データの一部として格納されないことです。(Oracle SQL 言語リファレンスローカルタイムゾーン付きタイムスタンプデータ型)
Snowflakeの同等のものは、 TIMESTAMP_LTZ です。
詳細情報については、 TIMESTAMP のセクションもご参照ください。
サンプルソースパターン¶
テーブル作成時のタイムゾーン付きタイムスタンプ¶
Oracle¶
Snowflake¶
ローカルタイムゾーン付きタイムスタンプ列からのデータの取得¶
Oracle¶
結果¶
TIMESTAMP_COL1 |
|---|
2010-10-10 18:00:00.000 |
2010-10-10 20:00:00.000 |
Snowflake¶
結果¶
TIMESTAMP_COL1 |
|---|
2010-10-10 12:00:00.000 -0700 |
2010-10-10 12:00:00.000 -0700 |
注釈
それぞれのデータベースには異なるタイムゾーンがセットされているため、両エンジンで結果が異なることに注意してください。Oracleのタイムゾーンは「+00:00」で、Snowflakeのタイムゾーンは「America/Los_Angeles」です。
データベースのデフォルトのタイムゾーンを変更するには、以下の構文を使用します。
既知の問題¶
1.デフォルトのデータベースのタイムゾーン¶
この種類のデータ型での操作はデータベースのタイムゾーンの影響を受け、結果が異なる場合があります。デフォルトのタイムゾーンは以下のクエリで確認できます。
Oracle¶
Snowflake¶
2.ローカルタイムゾーン動作のOracleタイムスタンプ¶
When operating timestamps with local timezone data types, Oracle converts the timestamps to the default timezone of the database. To emulate this behavior in Snowflake, the TIMESTAMP_TYPE_MAPPING session parameter should be set to 'TIMESTAMP_LTZ'.
3.タイムスタンプの形式は異なる場合があります¶
Snow Convertは日付/タイムスタンプ形式文字列の変換を行わないため、コードのデプロイ時にエラーが発生する可能性があります。例:
Oracle¶
Snowflake¶
警告
The query will fail in Snowflake because the default timestamp input format does not recognize '-8:00' as a valid UTC offset. It should be replaced with '0800' or '-08:00' to get the same result.
関連 EWIs¶
関連 EWIs はありません。
TIMESTAMP WITH TIME ZONE データ型¶
説明¶
TIMESTAMP WITH TIME ZONE は TIMESTAMP のバリアントで、値にタイムゾーンリージョン名やタイムゾーンオフセットを含みます。Snowflakeの同等のものは、 TIMESTAMP_TZ です。(Oracle SQL 言語リファレンスタイムゾーンデータ型のタイムスタンプ)
Snowflakeの同等のものは、 TIMESTAMP_TZ です。
詳細情報については、 TIMESTAMP のセクションもご参照ください。
サンプルソースパターン¶
テーブル作成時のタイムゾーン付きタイムスタンプ¶
Oracle¶
Snowflake¶
タイムゾーン付きタイムスタンプ列からのデータの取得¶
Oracle¶
結果¶
TIMESTAMP_COL1 |
|---|
2010-10-10 12:00:00.000 -0600 |
Snowflake¶
結果¶
TIMESTAMP_COL1 |
|---|
2010-10-10 12:00:00.000 -0700 |
注釈
タイムゾーンが指定されていない場合、データベースのデフォルトのタイムゾーンが追加されるため、両方のエンジンでタイムゾーンが異なることに注意してください。
データベースのデフォルトのタイムゾーンを変更するには、以下の構文を使用します。
既知の問題¶
1.タイムスタンプの形式は異なる場合があります¶
Snow Convertは日付/タイムスタンプ形式文字列の変換を行わないため、コードのデプロイ時にエラーが発生する可能性があります。例:
Oracle¶
Snowflake¶
警告
The query will fail in Snowflake because the default timestamp input format does not recognize '-8:00' as a valid UTC offset. It should be replaced with '-0800' or '-08:00' to get the same result.
関連 EWIs¶
関連 EWIs はありません。
datetimeの算術演算¶
このコンテンツでは、datetime型間のいくつかの算術演算の現在の変換について説明します。
説明¶
Oracleでは、足し算、引き算、掛け算、割り算のように、DateTime型の間でいくつかの算術演算を行うことができます。現在のところ、SnowConvert AIは足し算と引き算のいくつかのケースを解決することができます。これらのケースを以下に説明します。
サンプルソースパターン¶
これは、日付、タイムスタンプ、数値、および未知の型による加算と減算のさまざまな組み合わせに対する現在の変換の概要です。
注釈
以下の例については、次の表をご参照ください。
Oracle¶
Snowflake¶
加算¶
組み合わせマトリックス¶
これは、日付、タイムスタンプ、数値、および未知の型とのさまざまな組み合わせに対して、マイグレーターがどのように加算操作を解決するかの要約です。
加算 |
Date |
タイムスタンプ |
Number |
間隔 |
不明 |
Float |
|---|---|---|---|---|---|---|
Date |
INVALID |
INVALID |
Date+間隔(日) |
Date+間隔(IntervalUnit) |
DATEADD_UDF |
DATEADD_UDF |
タイムスタンプ |
INVALID |
INVALID |
タイムスタンプ+間隔(日) |
タイムスタンプ+間隔(IntervalUnit) |
DATEADD_UDF |
DATEADD_UDF |
Number |
Date+間隔(日) |
タイムスタンプ+間隔(日) |
Number + Number |
INVALID |
Number + Float |
|
間隔 |
Date+間隔(IntervalUnit) |
タイムスタンプ+間隔(IntervalUnit) |
INVALID |
不明+間隔(IntervalUnit) |
INVALID |
|
不明 |
DATEADD_UDF |
DATEADD_UDF |
不明+ Number |
不明+間隔(IntervalUnit) |
||
Float |
DATEADD_UDF |
DATEADD_UDF |
Float + Number |
INVALID |
Float + Float |
注釈
An Unknown Type column is the result of the migrator being unable to establish the data type that the column contains. This can happen for many reasons, for example, missing DDLs for the tables being operated on, or columns resulting from operations on views, CTEs, or subqueries.
警告
By default, Snow Convert migrates operations of type Date/Timestamp + Interval to the native Snowflake operations, but in some cases may be useful to use UDF instead. For further details, see Interval UDFs vs. Snowflake native interval operation.
マイグレーターが加算操作を解決するために使用できるさまざまなパスについて、以下に説明します。
無効¶
Oracleで加算操作を行う場合、特定の組み合わせは無効です。
Oracle¶
結果¶
Date+間隔(日)¶
これは、日付型と数値(およびその逆)の加算操作のための現在の変換です。例
Oracle¶
結果¶
ASDATE+1 |
|---|
2021-11-07 00:00:00.000 |
1+ASDATE |
|---|
2021-11-07 00:00:00.000 |
Snowflake¶
結果¶
ASDATE + INTERVAL '1 DAY' |
|---|
2021-11-07 |
タイムスタンプ+間隔(日)¶
これは、タイムスタンプ型と数値(およびその逆)の加算操作のための現在の変換です。例
Oracle¶
結果¶
ASTIMESTAMP+1 |
|---|
2021-11-06 11:00:00.000 |
1+ASTIMESTAMP |
|---|
2021-11-06 11:00:00.000 |
注釈
注意:Oracleでは、DATEとTIMESTAMP列の両方が時間コンポーネントを含んでいますが、Oracleは NLS_DATE_FORMAT パラメーターで指定されたフォーマットマスクを使用して、日付を暗黙的に文字列に変換する方法を決定しています。そのため、TIMESTAMPと Interval の間でいくつかの操作を実行すると、 NLS_DATE_FORMAT パラメーターを変更しない限り、結果はDATEのように表示され、時間コンポーネントが隠されてしまいます。
Snowflake¶
結果¶
ASTIMESTAMP + INTERVAL '1 DAY' |
|---|
2021-11-06 11:00:00.000 |
DATEADD_UDF¶
For those cases where there is an addition operation between a date or timestamp type and an unknown type, a user-defined function (UDF) is added. See the DATEADD_UDF implementation for details. The UDF is located in the UDFs folder. For example:
注釈
以下の例では、Unknown型列をシミュレートするためにサブクエリを使用します。
Oracle¶
結果¶
ASDATE+(SELECTEXTRACT(DAYFROMASTIMESTAMPTWO)FROMTIMES) |
|---|
2021-11-11 00:00:00.000 |
ASTIMESTAMP+(SELECTEXTRACT(DAYFROMASTIMESTAMPTWO)FROMTIMES) |
|---|
2021-11-10 11:00:00.000 |
Snowflake¶
結果¶
PUBLIC.DATEADD_UDF( ASDATE, (SELECT EXTRACT(DAY FROM ASTIMESTAMPTWO) FROM PUBLIC.TIMES)) |
|---|
2021-11-11 |
PUBLIC.DATEADD_UDF( ASTIMESTAMP, (SELECT EXTRACT(DAY FROM ASTIMESTAMPTWO) FROM PUBLIC.TIMES)) |
|---|
2021-11-10 11:00:00.000 |
減算¶
組み合わせマトリックス¶
減算 |
Date |
タイムスタンプ |
Number |
間隔 |
不明 |
Float |
|---|---|---|---|---|---|---|
Date |
DATEDIFF |
TIMESTAMP_DIFF___UDF |
Date -間隔(日) |
Date -間隔(IntervalUnit) |
DATEDIFF_UDF |
DATEDIFF_UDF |
タイムスタンプ |
TIMESTAMP_DIFF___UDF |
TIMESTAMP_DIFF___UDF |
タイムスタンプ-間隔(日) |
タイムスタンプ-間隔(IntervalUnit) |
DATEDIFF_UDF |
DATEDIFF_UDF |
Number |
INVALID |
INVALID |
Number - Number |
INVALID |
Number - Float |
|
間隔 |
INVALID |
INVALID |
INVALID |
不明-間隔(IntervalUnit) |
NOT SUPPORTED IN ORACLE |
|
不明 |
DATEDIFF_UDF |
DATEDIFF_UDF |
不明-間隔(IntervalUnit) |
|||
Float |
DATEDIFF_UDF |
DATEDIFF_UDF |
Float - Number |
NOT SUPPORTED IN ORACLE |
Float - Float |
注釈
An Unknown Type column is the result of the migrator being unable to establish the data type that the column contains. This can happen for many reasons, for example, missing DDLs for the tables being operated on, or columns resulting from operations on views, CTEs, or subqueries.
警告
By default, Snow Convert migrates operations of type Date/Timestamp + Interval to the native Snowflake operations, but in some cases may be useful to use UDF instead. For further details, see Interval UDFs vs. Snowflake native interval operation.
マイグレーターが減算操作を解決するために使用できるさまざまなパスについて、以下に説明します。
無効¶
Oracleで減算操作を行う場合、特定の組み合わせは無効です。
Oracle¶
結果¶
DATEDIFF¶
日付型の2つのオペランド間の減算は、時間単位(最初のパラメーター)として'day'を使用して、Snowflake DATEDIFF関数に変換されます。例
Oracle¶
結果¶
ASDATE-ASDATETWO |
|---|
1 |
Snowflake¶
結果¶
DATEDIFF(DAY, ASDATETWO, ASDATE) |
|---|
1 |
Date -間隔(日)¶
これは、日付型と数値の間の減算操作に対する現在の変換です。例
Oracle¶
結果¶
ASDATE-1 |
|---|
2021-11-05 00:00:00.000 |
ASDATE+-1 |
|---|
2021-11-05 00:00:00.000 |
Snowflake¶
結果¶
ASDATE - INTERVAL '1 DAY' |
|---|
2021-11-05 |
ASDATE + INTERVAL '-1 DAY' |
|---|
2021-11-05 |
タイムスタンプ-間隔(日)¶
これは、タイムスタンプ型と数値の加算操作のための現在の変換です。例
Oracle¶
結果¶
ASTIMESTAMP-1 |
|---|
2021-11-04 11:00:00.000 |
ASTIMESTAMP+-1 |
|---|
2021-11-04 11:00:00.000 |
Snowflake¶
結果¶
ASTIMESTAMP - INTERVAL '1 DAY' |
|---|
2021-11-04 11:00:00.000 |
ASTIMESTAMP + INTERVAL '-1 DAY' |
|---|
2021-11-04 11:00:00.000 |
注釈
注意:Oracleでは、DATEとTIMESTAMP列の両方が時間コンポーネントを含んでいますが、Oracleは NLS_DATE_FORMAT パラメーターで指定されたフォーマットマスクを使用して、日付を暗黙的に文字列に変換する方法を決定しています。そのため、TIMESTAMPと Interval の間でいくつかの操作を実行すると、 NLS_DATE_FORMAT パラメーターを変更しない限り、結果はDATEのように表示され、時間コンポーネントが隠されてしまいます。
For more information, see the Oracle NLS_DATE_FORMAT documentation.
TIMESTAMP_DIFF_UDF¶
The subtractions between timestamp types and dates with a timestamp and vice versa; are resolved by inserting the TIMESTAMP_DIFF_UDF user-defined function, (see the TIMESTAMP_DIFF_UDF implementation). For example
Oracle¶
結果¶
ASTIMESTAMP-ASTIMESTAMPTWO |
|---|
+000000000 01:00:00.000000 |
ASTIMESTAMP-ASDATETWO |
|---|
+000000000 11:00:00.000000 |
ASDATETWO-ASTIMESTAMP |
|---|
-000000000 11:00:00.000000 |
Snowflake¶
結果¶
PUBLIC.TIMESTAMP_DIFF_UDF( ASTIMESTAMP, ASTIMESTAMPTWO) |
|---|
+000000000 01:00:00.00000000 |
PUBLIC.TIMESTAMP_DIFF_UDF( ASTIMESTAMP, ASDATETWO) |
|---|
+000000000 11:00:00.00000000 |
PUBLIC.TIMESTAMP_DIFF_UDF( ASDATETWO, ASTIMESTAMP) |
|---|
-000000000 -11:00:00.00000000 |
DATEDIFF_UDF¶
For those cases where there is an addition operation between a date or timestamp type and an unknown type, a user-defined function (UDF) is added. See the DATEDIFF_UDF implementation, which could be edited to perform what is required. The UDF is located in the UDFs folder. For example:
Oracle¶
結果¶
ASDATE-(EXTRACT(DAYFROMASDATE)) |
|---|
2021-10-31 00:00:00.000 |
ASTIMESTAMP-(EXTRACT(DAYFROMASDATE)) |
|---|
2021-10-30 11:00:00.000 |
Snowflake¶
結果¶
PUBLIC.DATEDIFF_UDF( ASDATE, (EXTRACT(DAY FROM ASDATE))) |
|---|
2021-10-31 |
PUBLIC.DATEDIFF_UDF( ASTIMESTAMP, (EXTRACT(DAY FROM ASDATE))) |
|---|
2021-10-30 11:00:00.000 |
よくあるケース¶
警告:SSC-EWI-OR0036¶
この警告は、オペランドのデータ型によって加減算が正しく動作しない可能性があることを示すために使用されます。つまり、Snowflakeでの操作結果は、Oracleと機能的に同等ではないということです。日付型や数値型と不明型の足し算や引き算は、最も一般的なケースのひとつです。例
Oracle¶
Snowflake¶
このEWIは、列の型が解決できなかった操作で追加されます。列のタイプがINTERVALで、他の間隔型とのみ操作される場合、EWIが追加されますが、コードはコメントアウトされません。次の例では、この動作を説明します。
Oracle¶
Snowflake¶
既知の問題¶
1. TIMESTAMP DIFF UDF improvement¶
The TIMESTAMP_DIFF_UDF must be improved to be able to specify the return type. It means adding a third parameter where it is possible to specify the time part, such as day, hour, or month.
2.演算子としての組み込み関数¶
現在、日付型を返す組み込み関数間の日付操作の管理は行われていません。
3.複数のオペランド¶
現在のところ、2つ以上のオペランドを持つ日付操作のための管理はありません。
4.比較演算子¶
Currently, there is no management for date operations with comparison operators, such as greater than or less than.
5.出力形式¶
算術演算の結果の書式は、Snowflakeではコマンド ALTER SESSION SET DATE_OUTPUT_FORMAT = 'DESIRED-FORMAT'; で変更できます。
6.秒精度の間隔の操作における問題点¶
Some operations may differ in precision, specifically those that include intervals with seconds precision, this is because Oracle rounds depending on the precision, Snowflake's interval does not support seconds with decimal places, to have the same result, it is necessary to change the second decimal places by milliseconds in intervals considering the rounding that Oracle performs. The following example shows this issue
Oracle¶
結果¶
ASTIMESTAMP+INTERVAL'15.6789'SECOND(2,3) |
|---|
2021-11-05 11:00:15.679 |
ASTIMESTAMP+INTERVAL'15.6783'SECOND(2,3) |
|---|
2021-11-05 11:00:15.678 |
Snowflake¶
結果¶
ASTIMESTAMP + INTERVAL '15.6789 SECOND' |
|---|
2021-11-05 11:00:16.000 |
ASTIMESTAMP + INTERVAL '15.6783 SECOND' |
|---|
2021-11-05 11:00:16.000 |
ASTIMESTAMP + INTERVAL '15 SECOND, 679 MILLISECOND' |
|---|
2021-11-05 11:00:15.679 |
ASTIMESTAMP + INTERVAL '15 SECOND, 678 MILLISECOND' |
|---|
2021-11-05 11:00:15.678 |
関連 EWIs¶
SSC-EWI-0108:以下のサブクエリは、無効とみなされるパターンの少なくとも1つに一致し、コンパイルエラーが発生する可能性があります。
SSC-EWI-OR0036:型解決の問題で、文字列と日付の間の算術演算が正しく動作しないことがあります。
間隔 UDFs とSnowflakeネイティブの間隔操作¶
説明¶
以下の表は、間隔の演算に関する DATEADD_UDF INTERVAL and DATEDIFF_UDF INTERVAL と Snowflakeネイティブ操作 の比較を示しています。
必要なコード¶
比較テーブルのクエリを実行するには、以下のコードを実行する必要があります。
比較テーブル¶
Oracle¶
Snowflake¶
Snowflake UDF¶
結果¶
Oracle |
Snowflake操作 |
UDF |
|---|---|---|
2022-12-05 11:00:00.000 |
2022-12-05 11:00:00.000 |
2022-12-05 11:00:00.000 |
2020-10-05 11:00:00.000 |
2020-10-05 11:00:00.000 |
2020-10-05 11:00:00.000 |
2023-12-05 11:00:00.000 |
2023-12-05 11:00:00.000 |
2023-12-05 11:00:00.000 |
2019-10-05 11:00:00.000 |
2019-10-05 11:00:00.000 |
2019-10-05 11:00:00.000 |
2021-12-05 11:00:00.000 |
2021-12-05 11:00:00.000 |
2021-12-05 11:00:00.000 |
2021-10-05 11:00:00.000 |
2021-10-05 11:00:00.000 |
2021-10-05 11:00:00.000 |
2022-01-05 11:00:00.000 |
2022-01-05 11:00:00.000 |
2022-01-05 11:00:00.000 |
2021-09-05 11:00:00.000 |
2021-09-05 11:00:00.000 |
2021-09-05 11:00:00.000 |
2021-11-06 12:00:00.222 |
2021-11-06 12:00:00.222 |
2021-11-06 12:00:00.222 |
2021-11-04 09:59:59.778 |
2021-11-04 09:59:59.778 |
2021-11-04 09:59:59.778 |
2021-11-06 12:10:00.000 |
2021-11-06 12:10:00.000 |
2021-11-06 12:10:00.000 |
2021-11-04 09:50:00.000 |
2021-11-04 09:50:00.000 |
2021-11-04 09:50:00.000 |
2021-11-06 12:00:00.000 |
2021-11-06 12:00:00.000 |
2021-11-06 12:00:00.000 |
2021-11-04 10:00:00.000 |
2021-11-04 10:00:00.000 |
2021-11-04 10:00:00.000 |
2021-11-15 11:00:00.000 |
2021-11-15 11:00:00.000 |
2021-11-15 11:00:00.000 |
2021-10-26 11:00:00.000 |
2021-10-26 11:00:00.000 |
2021-10-26 11:00:00.000 |
2021-11-05 14:05:00.000 |
2021-11-05 14:05:00.000 |
2021-11-05 14:05:00.000 |
2021-11-05 07:55:00.000 |
2021-11-05 07:55:00.000 |
2021-11-05 07:55:00.000 |
2021-11-05 16:00:00.000 |
2021-11-05 16:00:00.000 |
2021-11-05 16:00:00.000 |
2021-11-05 06:00:00.000 |
2021-11-05 06:00:00.000 |
2021-11-05 06:00:00.000 |
2021-11-05 11:05:10.000 |
2021-11-05 11:05:10.000 |
2021-11-05 11:05:10.000 |
2021-11-05 10:54:50.000 |
2021-11-05 10:54:50.000 |
2021-11-05 10:54:50.000 |
2021-11-05 11:30:00.000 |
2021-11-05 11:30:00.000 |
2021-11-05 11:30:00.000 |
2021-11-05 10:30:00.000 |
2021-11-05 10:30:00.000 |
2021-11-05 10:30:00.000 |
2021-11-19 08:00:00.000 |
2021-11-19 08:00:00.000 |
2021-11-19 08:00:00.000 |
2021-10-22 14:00:00.000 |
2021-10-22 14:00:00.000 |
2021-10-22 14:00:00.000 |
2021-11-05 11:00:15.679 |
2021-11-05 11:00:16.000 |
2021-11-05 11:00:15.678 |
2021-11-05 10:59:44.321 |
2021-11-05 10:59:44.000 |
2021-11-05 11:00:15.678 |
2022-12-06 00:00:00.000 |
2022-12-06 |
2022-12-06 |
2020-10-06 00:00:00.000 |
2020-10-06 |
2020-10-06 |
2023-12-06 00:00:00.000 |
2023-12-06 |
2023-12-06 |
2019-10-06 00:00:00.000 |
2019-10-06 |
2019-10-06 |
2021-12-06 00:00:00.000 |
2021-12-06 |
2021-12-06 |
2021-12-06 00:00:00.000 |
2021-10-06 |
2021-10-06 |
2022-01-06 00:00:00.000 |
2022-01-06 |
2022-01-06 |
2021-09-06 00:00:00.000 |
2021-09-06 |
2021-09-06 |
2021-11-07 01:00:00.000 |
2021-11-07 01:00:00.222 |
2021-11-07 |
2021-11-04 22:59:59.000 |
2021-11-04 22:59:59.778 |
2021-11-04 |
2021-11-07 01:10:00.000 |
2021-11-07 01:10:00.000 |
2021-11-07 |
2021-11-04 22:50:00.000 |
2021-11-04 22:50:00.000 |
2021-11-04 |
2021-11-07 01:00:00.000 |
2021-11-07 01:00:00.000 |
2021-11-07 |
2021-11-04 23:00:00.000 |
2021-11-04 23:00:00.000 |
2021-11-04 |
2021-11-16 00:00:00.000 |
2021-11-16 |
2021-11-16 |
2021-10-27 00:00:00.000 |
2021-10-27 |
2021-10-27 |
2021-11-06 03:05:00.000 |
2021-11-06 03:05:00.000 |
2021-11-06 |
2021-11-05 20:55:00.000 |
2021-11-05 20:55:00.000 |
2021-11-05 |
2021-11-06 05:00:00.000 |
2021-11-06 05:00:00.000 |
2021-11-06 |
2021-11-05 19:00:00.000 |
2021-11-05 19:00:00.000 |
2021-11-05 |
2021-11-06 00:05:10.000 |
2021-11-06 00:05:10.000 |
2021-11-06 |
2021-11-05 23:54:50.000 |
2021-11-05 23:54:50.000 |
2021-11-05 |
2021-11-06 00:30:00.000 |
2021-11-06 00:30:00.000 |
2021-11-06 |
2021-11-05 23:30:00.000 |
2021-11-05 23:30:00.000 |
2021-11-05 |
2021-11-19 21:00:00.000 |
2021-11-19 21:00:00.000 |
2021-11-19 |
2021-10-23 03:00:00.000 |
2021-10-23 03:00:00.000 |
2021-10-23 |
2021-11-06 00:00:15.000 |
2021-11-06 00:00:16.000 |
2021-11-06 |
2021-11-05 23:59:44.000 |
2021-11-05 23:59:44.000 |
2021-11-05 |
2010-11-01 12:00:00.000 |
2010-11-01 12:00:00.000 |
2010-11-01 12:00:00.000 |
2008-09-01 12:00:00.000 |
2008-09-01 12:00:00.000 |
2008-09-01 12:00:00.000 |
2011-11-01 12:00:00.000 |
2011-11-01 12:00:00.000 |
2011-11-01 12:00:00.000 |
2007-09-01 12:00:00.000 |
2007-09-01 12:00:00.000 |
2007-09-01 12:00:00.000 |
2009-11-01 12:00:00.000 |
2009-11-01 12:00:00.000 |
2009-11-01 12:00:00.000 |
2009-09-01 12:00:00.000 |
2009-09-01 12:00:00.000 |
2009-09-01 12:00:00.000 |
2009-12-01 12:00:00.000 |
2009-12-01 12:00:00.000 |
2009-12-01 12:00:00.000 |
2009-08-01 12:00:00.000 |
2009-08-01 12:00:00.000 |
2009-08-01 12:00:00.000 |
2009-10-02 13:00:00.222 |
2009-10-02 13:00:00.222 |
2009-10-02 13:00:00.222 |
2009-09-30 10:59:59.778 |
2009-09-30 10:59:59.778 |
2009-09-30 10:59:59.778 |
2009-10-02 13:10:00.000 |
2009-10-02 13:10:00.000 |
2009-10-02 13:10:00.000 |
2009-09-30 10:50:00.000 |
2009-09-30 10:50:00.000 |
2009-09-30 10:50:00.000 |
2009-10-02 13:00:00.000 |
2009-10-02 13:00:00.000 |
2009-10-02 13:00:00.000 |
2009-09-30 11:00:00.000 |
2009-09-30 11:00:00.000 |
2009-09-30 11:00:00.000 |
2009-10-11 12:00:00.000 |
2009-10-11 12:00:00.000 |
2009-10-11 12:00:00.000 |
2009-09-21 12:00:00.000 |
2009-09-21 12:00:00.000 |
2009-09-21 12:00:00.000 |
2009-10-01 15:05:00.000 |
2009-10-01 15:05:00.000 |
2009-10-01 15:05:00.000 |
2009-10-01 08:55:00.000 |
2009-10-01 08:55:00.000 |
2009-10-01 08:55:00.000 |
2009-10-01 17:00:00.000 |
2009-10-01 17:00:00.000 |
2009-10-01 17:00:00.000 |
2009-10-01 07:00:00.000 |
2009-10-01 07:00:00.000 |
2009-10-01 07:00:00.000 |
2009-10-01 12:05:10.000 |
2009-10-01 12:05:10.000 |
2009-10-01 12:05:10.000 |
2009-10-01 11:54:50.000 |
2009-10-01 11:54:50.000 |
2009-10-01 11:54:50.000 |
2009-10-01 12:30:00.000 |
2009-10-01 12:30:00.000 |
2009-10-01 12:30:00.000 |
2009-10-01 11:30:00.000 |
2009-10-01 11:30:00.000 |
2009-10-01 11:30:00.000 |
2009-10-15 09:00:00.000 |
2009-10-15 09:00:00.000 |
2009-10-15 09:00:00.000 |
2009-09-17 15:00:00.000 |
2009-09-17 15:00:00.000 |
2009-09-17 15:00:00.000 |
2009-10-01 12:00:15.679 |
2009-10-01 12:00:16.000 |
2009-10-01 12:00:15.678 |
2009-10-01 11:59:44.321 |
2009-10-01 11:59:44.000 |
2009-10-01 11:59:44.321 |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
SSC-FDM-OR0042:Timestamp に変換された Date 型の動作が異なる
PL SQLデータ型¶
BINARY_INTEGER データ型¶
このデータ型は、 PLS_INTEGER データ型と同じです。
PLS_INTEGER データ型¶
説明¶
PLS_INTEGERデータ型は32ビットで表現される-2,147,483,648~2,147,483,647の範囲の符号付き整数を格納します。(Oracle言語リファレンス PLS_INTEGER データ型)
PLS_INTEGER データ型は NUMBER に変換されます。この変換は、 PLS_INTEGER の各サブタイプにも適用されます。
NATURALNATURALNPOSITIVEPOSITIVENSIGNTYPESIMPLE_INTEGER
警告
これらのサブタイプのいくつかは、現在SnowConvert AIで認識されていないため、 VARIANT に変換され、ユーザー定義タイプとみなされます。この問題を解決するための作業項目はすでにあります。
サンプルソースパターン¶
以下のテーブルとその挿入例をご覧ください。
コード¶
プロシージャブロックでの PLS_INTEGER の使用¶
Oracle¶
結果¶
COL |
|---|
2147483647 |
2147483648 |
2147483649 |
Snowflake¶
結果¶
COL |
|---|
2147483647 |
2147483648 |
2147483649 |
既知の問題¶
1.ストレージとパフォーマンス機能は維持されませんでした¶
Oracle PLS_INTEGER は、ストレージサイズと算術演算のパフォーマンスという点でいくつかの利点があります。Snowflake NUMBER にはこれらの機能がないため、これらの機能はエミュレートされませんでした。詳細情報については、 PLS_INTEGER ドキュメントをご覧ください。
関連 EWIs¶
関連 EWIs はありません。
文字データ型¶
文字データ型は、単語および自由形式のテキストである文字(英数字)データを、データベースの文字セットまたは国別文字セットで格納します。(Oracle SQL Language Reference Character Data Types)
CHAR データ型¶
説明¶
CHARデータ型は、データベースの文字セット内の 固定 長の文字列を指定します。(Oracle SQL 言語リファレンス CHAR データ型)
Oracleのドキュメントで示されているように、 CHAR データ型のサイズは長さの制約であり、容量と混同しないでください。CHAR に格納できる文字の合計は、データベースの文字セットや構成によって異なりますが、一般的に許容される最大サイズは2000です。
Snowflakeでは、 CHAR 型は VARCHAR と同義であり、ここで確認できます。
Snowflake SQL 言語リファレンステキストデータ型
標準最大サイズはかなり大きいです。しかし、これはSnowflake VARCHAR がより多くのストレージを消費することを意味するものではありません。これはドキュメントにも記載されています。
VARCHAR(16777216)列の1文字列は1文字しか消費しません。
サンプルソースパターン¶
テーブル作成時のCharデータ型¶
Oracle¶
Snowflake¶
char列からのデータの取得¶
Oracle¶
結果¶
CHAR_COLUMN1 |
CHAR_COLUMN2 |
CHAR_COLUMN3 |
CHAR_COLUMN4 |
|---|---|---|---|
H |
Hello world |
Hello world |
Hello world |
Snowflake¶
結果¶
CHAR_COLUMN1 |
CHAR_COLUMN2 |
CHAR_COLUMN3 |
CHAR_COLUMN4 |
|---|---|---|---|
H |
Hello world |
Hello world |
Hello world |
注釈
Oracleでは、列定義で決定された固定サイズに合わせて値が空白で埋められます。一方、Snowflakeは動的サイズ(長さの制限を維持)を使用して値を格納します。
CHAR の内部データ型をチェックする¶
冒頭で述べたように、Snowflakeは内部的に CHAR 型の列に VARCHAR を使用しており、テーブルを記述することでそれを確認できます。
Oracle¶

Snowflake¶

注釈
長さの制限は維持されますが、列が使用するメモリは DBMS ごとに異なります。
各列のサイズをバイト単位で取得します。¶
Oracle¶
結果¶
LENGTHB(CHAR_COLUMN1) |
LENGTHB(CHAR_COLUMN2) |
LENGTHB(CHAR_COLUMN3) |
LENGTHB(CHAR_COLUMN4) |
|---|---|---|---|
1 |
15 |
15 |
15 |
Snowflake¶
結果¶
OCTET_LENGTH(CHAR_COLUMN1) |
OCTET_LENGTH(CHAR_COLUMN2) |
OCTET_LENGTH(CHAR_COLUMN3) |
OCTET_LENGTH(CHAR_COLUMN4) |
|---|---|---|---|
1 |
11 |
11 |
11 |
注意
このようなわずかな違いもありますが、データの統合は保たれています。
既知の問題¶
1.一部の組み込み関数から得られる結果は異なる場合があります
前のセクションで説明したように、列に対して組み込み関数を使用すると、異なる結果を取得する場合があります。例えば、列の長さを取得します。
関連 EWIs¶
SSC-FDM-OR0015: LENGTHB が OCTET_LENGTH に変換されました。
NCHAR データ型¶
説明¶
NCHAR データ型は、国文字セットの 固定 長の文字列を指定します。(Oracle SQL 言語リファレンス NCHAR)
NCHAR では、Unicodeで特殊文字を保存して、どのような使用状況でも保持することができますが、これらの特殊文字を保存するには、より多くのビットが必要になる場合があります。そのため、デフォルトでは、 NCHAR 文字セットは AL16UTF16 であり、これは通常 AL32UTF8 である CHAR の共通文字データセットとは対照的です。
NCHAR はSnowflakeでは NCHAR として保存されますが、バックグラウンドではSnowflakeは VARCHAR を使用します。CHAR に関連する変換情報 は、 NCHAR でも有効です。
サンプルソースパターン¶
テーブル作成時のNcharデータ型¶
Oracle¶
Snowflake¶
注釈
Oracleでは、これらの値を同じサイズの CHAR 列に挿入しようとすると、 value too large for column というエラーがトリガーされます。
Nchar列からの情報の取得¶
Oracle¶
結果¶
NCHAR_COLUMN1 |
NCHAR_COLUMN2 |
|---|---|
ភ |
ភាសាខ |
Snowflake¶
結果¶
NCHAR_COLUMN1 |
NCHAR_COLUMN2 |
|---|---|
ភ |
ភាសាខ |
各列のサイズをバイト単位で取得する¶
Oracle¶
結果¶
LENGTHB(NCHAR_COLUMN1) |
LENGTHB(NCHAR_COLUMN2) |
|---|
Snowflake¶
結果¶
OCTET_LENGTH(NCHAR_COLUMN1) |
OCTET_LENGTH(NCHAR_COLUMN2) |
|---|
列宣言で指定された数値はバイト単位ではなく文字単位のサイズであることに注意してください。そのため、これらの特殊文字を格納するために、より多くのスペースが使用されることがわかります。
注釈
Snowflakeでは、 VARCHAR は UTF-8を使用します。サイズは、1、2、3、または4バイトで表現できるUnicode文字によって異なります。この場合、カンボジア文字は3バイトで格納されます。
注意
このようなわずかな違いもありますが、データの統合は保たれています。
既知の問題¶
1.一部の組み込み関数から得られる結果は異なる場合があります
前のセクションで説明したように、列に対して組み込み関数を使用すると、異なる結果を取得する場合があります。例えば、列の長さを取得します。
関連 EWIs¶
SSC-FDM-OR0015: LENGTHB が OCTET_LENGTH に変換されました。
NVARCHAR2 データ型¶
説明¶
NVARCHAR2データ型は、国文字セットの可変長の文字列を指定します。(Oracle SQL 言語リファレンス NVARCHAR2)
NVARCHAR2 では、Unicodeで特殊文字を保存して、どのような使用状況でも保持することができますが、これらの特殊文字を保存するには、より多くのビットが必要になる場合があります。そのため、デフォルトでは、 NVARCHAR2 文字セットは AL16UTF16 であり、これは通常 AL32UTF8 である VARCHAR2 の共通文字データセットとは対照的です。
Snowflake VARCHARに変換されたNVARCHAR、 VARCHAR2に関係する変換情報 もNVARCHAR2に対して有効です。
サンプルソースパターン¶
テーブル作成時のNvarchar2データ型¶
Oracle¶
Snowflake¶
注釈
Oracleでは、これらの値を同じサイズの VARCHAR2 列に挿入しようとすると、 value too large for column というエラーがトリガーされます。
Nchar列からの情報の取得¶
Oracle¶
結果¶
NVARCHAR2_COLUMN |
|---|
ភាសាខ |
Snowflake¶
結果¶
NVARCHAR2_COLUMN |
|---|
ភាសាខ |
各列のサイズをバイト単位で取得する¶
Oracle¶
結果¶
LENGTHB(NVARCHAR2_COLUMN) |
|---|
10 |
Snowflake¶
結果¶
OCTET_LENGTH(NVARCHAR2_COLUMN) |
|---|
15 |
列宣言で指定された数値はバイト単位ではなく文字単位のサイズであることに注意してください。そのため、これらの特殊文字を格納するために、より多くのスペースが使用されることがわかります。
注釈
Snowflakeでは、 VARCHAR は UTF-8を使用します。サイズは、1、2、3、または4バイトで表現できるUnicode文字によって異なります。この場合、カンボジア文字は3バイトで格納されます。
注意
このようなわずかな違いもありますが、データの統合は保たれています。
既知の問題¶
1.一部の組み込み関数から得られる結果は異なる場合があります
前のセクションで説明したように、列に対して組み込み関数を使用すると、異なる結果を取得する場合があります。例えば、列の長さを取得します。
関連 EWIs¶
SSC-FDM-OR0015: LENGTHB が OCTET_LENGTH に変換されました。
VARCHAR データ型¶
説明¶
Oracleでは、ドキュメントで説明されているように、 VARCHAR の代わりに VARCHAR2 を使用することを推奨しています。
しかし、構文は ANSI、DB2、SQL/DSデータ型 を使って解析および変換されます。
VARCHAR2 データ型¶
説明¶
VARCHAR2データ型は、データベース文字セットの 可変 長の文字列を指定します。(Oracle SQL 言語リファレンス VARCHAR2)
Oracleのドキュメントで示されているように、 VARCHAR2 データ型のサイズは長さの制約であり、容量と混同しないでください。VARCHAR2 に格納できる文字の合計は、データベースの文字セットや構成によって異なりますが、一般的に許容される最大サイズは4000です。
VARCHAR2 は、デフォルトでより大きなバイト数/文字数を格納できるSnowflake VARCHAR に翻訳されます。いずれにせよ、使用されるメモリはOracleと同じように列に格納された値のサイズを使って変数化されます。
サンプルソースパターン¶
テーブル作成時のVarchar2データ型¶
Oracle¶
Snowflake¶
varchar列からのデータの取得¶
Oracle¶
結果¶
VARCHAR2_COLUMN1 |
VARCHAR2_COLUMN2 |
VARCHAR2_COLUMN3 |
|---|---|---|
H |
Hello |
Hell |
Snowflake¶
結果¶
VARCHAR2_COLUMN1 |
VARCHAR2_COLUMN2 |
VARCHAR2_COLUMN3 |
|---|---|---|
H |
Hello |
Hell |
列の変数サイズの見直し¶
Oracle¶
結果¶
LENGTHB(VARCHAR2_COLUMN1) |
LENGTHB(VARCHAR2_COLUMN2) |
LENGTHB(VARCHAR2_COLUMN3) |
|---|---|---|
1 |
5 |
4 |
Snowflake¶
結果¶
OCTET_LENGTH(VARCHAR2_COLUMN1) |
OCTET_LENGTH(VARCHAR2_COLUMN2) |
OCTET_LENGTH(VARCHAR2_COLUMN3) |
|---|---|---|
1 |
5 |
4 |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
SSC-FDM-OR0015: LENGTHB が OCTET_LENGTH に変換されました。
LOB データ型¶
説明¶
組み込みのLOBデータ型
BLOB、CLOB、NCLOB(内部的に格納)およびBFILE(外部的に格納)は、テキスト、画像、ビデオ、空間データなどの大規模な非構造化データを格納できます。(Oracle SQL Language Reference LOB Data Type)
警告
LOBデータ型はSnowflakeでは サポートされていません 。Snowflakeのドキュメント によると、 CLOB を VARCHAR に、 BLOB を BINARY に変換することが推奨されていますが、いくつかの制限があります。 {% endhint %}
警告
テーブルのLOBプロパティも、Snowflakeでは サポートされていません 。 {% endhint %}
BFILE データ型
Description
データベースの外部に保存されている大容量バイナリファイルへのロケーターを含みます。データベースサーバー上の外部 LOBs へのバイトストリームI/Oアクセスを有効にします。
BFILE列または属性には、BFILEロケーターが格納されます。このロケーターは、サーバーのファイルシステム上のバイナリファイルへのポインターとして機能します。ロケーターはディレクトリ名とファイル名を保持します。(Oracle SQL 言語リファレンス BFILE データ型)。
警告
BFILE データ型は、Snowflakeでは サポートされていません。VARCHAR が代わりに使用されます。
サンプルソースパターン¶
テーブル作成時のBfileデータ型¶
警告
Oracle BFILE columns are used to store a locator with the directory and filename. They are changed to Snowflake VARCHAR to store the directory and filename into the column. However, loading the content of the file must be done manually.
Oracle¶
結果¶
COL1 |
|---|
[BFILE:myfile.png] |
Snowflake¶
結果¶
COL1 |
|---|
mydirectory\myfile.png |
警告
BFILENAME() を置き換えるために UDF が追加されました。
UDF が追加されました
既知の問題¶
1.DBMS_LOB 組み込みパッケージにアクセスできません¶
Snowflakeでは LOB データ型がサポートされていないため、 DBMS_LOB 関数に相当するものはなく、回避策もまだ実装されていません。
関連 EWIs¶
SSC-EWI-OR0105:BFILE列の使用には追加作業が必要です。 BUILD_STAGE_URL 関数は推奨される回避策です。
BLOB データ型¶
説明¶
BLOBデータ型は構造化されていないバイナリ大容量オブジェクトを格納します。BLOBオブジェクトは文字セットセマンティクスのないビットストリームと考えることができます。(Oracle SQL 言語リファレンス BLOB データ型)。
警告
BLOB データ型は、Snowflakeでは サポートされていません。BINARY が代わりに使用されます。
サンプルソースパターン¶
テーブル作成時の BLOB¶
Oracle¶
Snowflake¶
データの取得¶
Oracle¶
結果¶
BLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
[NULL] |
[BLOB] |
Snowflake¶
結果¶
BLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
NULL |
関数例¶
警告
この例は、Oracle BLOB とSnowflake BINARY の機能的同等性を示すために使用されているだけであり、SnowConvert AIの変換 ではありません 。
警告
"utl_raw.cast_to_raw"と"DBMS_LOB.SUBSTR"関数を使用しています。これらの関数の変換は、現在 SnowConvert では サポートされていません。
Oracle¶
結果¶
RESULT |
|---|
[NULL] |
hello world |
Snowflake¶
結果¶
RESULT |
|---|
[NULL] |
hello world |
既知の問題¶
1.最大長 BLOB (Oracle)と BINARY (Snowflake)の違い¶
Oracle BLOB 列の最大サイズは (4ギガバイト - 1) * (データベースブロックサイズ) ですが、 Snowflake BINARY は 8MB に制限されています。
2.EMPTY_BLOB の空の値¶
EMPTY_BLOB() を使用して列を初期化すると、空の LOB ロケーターが返されます。一方、翻訳後の列は文字列' 'を返します。
3.DBMS_LOB 組み込みパッケージにアクセスできません¶
Snowflakeでは LOB データ型がサポートされていないため、 DBMS_LOB 関数に相当するものはなく、回避策もまだ実装されていません。
関連 EWIs¶
SSC-EWI-OR0076:組み込みパッケージはサポート対象外です。
CLOB データ型¶
説明¶
シングルバイト文字またはマルチバイト文字を含む文字大容量オブジェクト。固定幅文字セットと可変幅文字セットの両方がサポートされており、どちらもデータベースの文字セットを使用します。(Oracle SQL 言語リファレンス CLOB データ型)。
警告
CLOB データ型は、Snowflakeでは サポートされていません。VARCHAR が代わりに使用されます。
サンプルソースパターン¶
テーブル作成時の CLOB¶
Oracle¶
Snowflake¶
データの取得¶
Oracle¶
結果¶
CLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
THIS IS A TEST |
Snowflake¶
結果¶
CLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
THIS IS A TEST |
- |
既知の問題¶
1.最大長 CLOB (Oracle)と VARCHAR (Snowflake)の違い¶
Oracle CLOB 列の最大サイズは (4ギガバイト - 1) * (データベースブロックサイズ) ですが、 Snowflake VARCHAR は 16MB に制限されています。
2.EMPTY_CLOB の空の値¶
EMPTY_CLOB() を使用して列を初期化すると、空の LOB ロケーターが返されます。一方Snowflakeでは、翻訳後の列は文字列' - 'を返します。
3.DBMS_LOB 組み込みパッケージにアクセスできません¶
Snowflakeでは LOB データ型がサポートされていないため、 DBMS_LOB 関数に相当するものはなく、回避策もまだ実装されていません。
関連 EWIs¶
関連 EWIs はありません。
NCLOB データ型¶
説明¶
Unicode文字を含む文字大容量オブジェクト。固定幅文字セットと可変幅文字セットの両方がサポートされており、どちらもデータベースの国文字セットを使用します。(Oracle SQL 言語リファレンス NCLOB データ型)。
警告
NCLOB データ型は、Snowflakeでは サポートされていません。VARCHAR が代わりに使用されます。
サンプルソースパターン¶
テーブル作成時の NCLOB¶
Oracle¶
Snowflake¶
データの取得¶
Oracle¶
結果¶
NCLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
THIS IS A TEST |
Snowflake¶
結果¶
NCLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
THIS IS A TEST |
- |
既知の問題¶
1.最大長 CLOB (Oracle)と VARCHAR (Snowflake)の違い¶
Oracle NCLOB 列の最大サイズは (4ギガバイト - 1) * (データベースブロックサイズ) ですが、 Snowflake VARCHAR は 16MB に制限されています。
2.EMPTY_CLOB の空の値¶
EMPTY_CLOB() を使用して列を初期化すると、空の LOB ロケーターが返されます。一方、翻訳後の列は文字列' - 'を返します。
3.DBMS_LOB 組み込みパッケージにアクセスできません¶
Snowflakeでは LOB データ型がサポートされていないため、 DBMS_LOB 関数に相当するものはなく、回避策もまだ実装されていません。
関連 EWIs¶
関連 EWIs はありません。