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