2.10.1 LOADコマンド
カンマ区切り値(csv)ファイルをローカル・ディレクトリまたはクラウド・ストレージの場所から表にロードします。
構文
LOAD [TABLE] [schema.]table_name { <file-specification> | <cloud-storage-specification> }
[NEW | SHOW | SHOW_DDL | CREATE |CREATE_DDL]
ここで
[schema.]table_nameは、ロードする表を示します。schemaが省略されている場合、接続されているユーザー・スキーマの表がロードされます。
file-specificationの構文は次のとおりです。
{ <fully-qualified-file-name> | <file-name> }
-
fully-qualified-file-name: ロードするファイルのフルパスを示します。
-
file-name: ロードするファイルを示します。ファイルはデフォルトのパスにある必要があります。
cloud-storage-specificationの構文は次のとおりです。
{ CLOUDSTORAGE | CS | CLOUD_STORAGE } [ <url> | <qualified-name> ]
-
url: クラウド・ストレージ・コマンドを使用してデフォルトのクラウド・ストレージURLが設定されていない場合、クラウド・ストレージ・ファイルの完全なURL。
-
qualified-name: オブジェクトの名前。オプションでネームスペースおよびバケットで修飾されます。修飾された名前とクラウド・ストレージ・コマンドにより指定されたデフォルトURLの組合せによって、オブジェクトURLが完全に識別される必要があります。urlおよびqualified-nameを省略する場合は、デフォルトのクラウド・ストレージURLをオブジェクトに設定する必要があります。
NEW
は表を作成し、データをロードします。
[SHOW | SHOW_DDL]
はDDL生成フェーズを実行してDDLを表示します。
[CREATE | CREATE_DDL]
はDDL生成フェーズを実行して表を作成します。
SET LOAD
およびSET LOADFORMAT
を使用して、DDL分析および生成のためのプロパティを指定します。
CREATE TABLE DDLの生成により、データ・ファイルが事前スキャンされ、列のプロパティが特定されます。SET LOAD SCAN
<nを使用して、DDLでスキャンする行数を指定します。デフォルトは100です。スキャンをオフにするには、0に設定します。
SET LOAD COL_SIZE
を使用して、生成される列サイズを変更します。SET LOAD MAP_NAMES
を使用して、ファイルの列名を表の列名にマップします。
Cloud Storageコマンドの詳細は、クラウド・ストレージの使用を参照してください。
ファイル形式のデフォルトは次のとおりです。
-
列はカンマで区切られ、オプションで二重引用符で囲まれている場合があります。
-
行はWindows、UNIXまたはMacの標準の行の終了文字で終了されます。
-
ファイルはエンコードされたUTF8です。
デフォルト・ロード:
-
バッチ当たり50行を処理します。
-
AUTOCOMMITがSQLcLで設定されている場合、10バッチごとにコミットが実行されます。
-
50を超えるエラーが見つかった場合、ロードが終了します。
ファイル(デリミタ、囲み)の読取りには、SET LOADFORMAT
optionsを使用します。
SET LOAD
オプションを使用して、データ(バッチ当たりの行、日付書式)をロードします。
例
次の例は、ローカル・ストレージから表にファイルをロードする方法を示しています。
--Create Table "countries"
create table countries(countries_id NUMBER(5),countries_name VARCHAR2(40));
Table COUNTRIES created
--Load file COUNTRIES_DATA_TABLE.csv in local storage to "countries" table
load countries C:\Users\JDOE\SQLcl\COUNTRIES_DATA_TABLE.csv
format csv
column_names on
delimiter ,
enclosure_left "
enclosure_right "
encoding UTF8
row_limit off
row_terminator default
skip_rows 0
skip_after_names
--Number of rows processed: 30
--Number of rows in error:
0 - SUCCESS: Load processed without errors
--Check the number of rows in countries table
select count(*) from countries;
COUNT(*)
–--------
30
次の例は、新しい表EMPにデータをロードする方法を示しています。
load emp empfile.csv new
--Create new table and load data into table HR.EMP
csv
column_names on
delimiter ,
enclosures ""
encoding UTF8
row_limit off
row_terminator default
skip_rows 0
skip_after_names
#INFO DATE format detected: RRRR-MM-DD
CREATE TABLE HR.EMP
(
EMPLOYEE_ID NUMBER(5),
FIRST_NAME VARCHAR2(26),
LAST_NAME VARCHAR2(26),
EMAIL VARCHAR2(26),
PHONE_NUMBER VARCHAR2(26),
HIRE_DATE DATE,
JOB_ID VARCHAR2(26),
SALARY NUMBER(9, 2),
COMMISSION_PCT VARCHAR2(26),
MANAGER_ID NUMBER(5),
DEPARTMENT_ID NUMBER(5)
)
;
#INFO Table created
#INFO Number of rows processed: 21
#INFO Number of rows in error: 0
#INFO Last row processed in final committed batch: 21
SUCCESS: Processed without errors
次の例は、ローカル・ファイルから新しいテーブルを作成する方法を示しています。
load emp1 empfile.csv create_ddl
--Create new table HR.EMP1
csv
column_names on
delimiter ,
enclosures ""
encoding UTF8
row_limit off
row_terminator default
skip_rows 0
skip_after_names
batch_rows 50
batches_per_commit 10
clean_names transform
column_size rounded
commit on
date_format
errors 50
map_column_names off
method insert
timestamp_format
timestamptz_format
locale English United States
scan_rows 100
truncate off
unknown_columns_fail on
--Pre-scans the date format
#INFO DATE format detected: RRRR-MM-DD
CREATE TABLE SYSTEM.EMP1
(
EMPLOYEE_ID NUMBER(5),
FIRST_NAME VARCHAR2(26),
LAST_NAME VARCHAR2(26),
EMAIL VARCHAR2(26),
PHONE_NUMBER VARCHAR2(26),
HIRE_DATE DATE,
JOB_ID VARCHAR2(26),
SALARY NUMBER(9, 2),
COMMISSION_PCT VARCHAR2(26),
MANAGER_ID NUMBER(5),
DEPARTMENT_ID NUMBER(5)
)
;
#INFO Table created
SUCCESS: Processed without errors