はじめに
sqlcl 24.4.1 でLoadコマンドがExcelファイルに対応しました。
「Load command modified to support loading data from Excel」
ExcelファイルをOracle Databaseにロードするのにsqlclを使ってみました。
事前準備
- sqlcl 24.4.1 のダウンロードと解凍
- Java 11 or 17 or 21 のインストール
Excelファイルのロード
表作成DDLの確認
コマンドリファレンス:load <表名> <ファイル名> show
$ ./sql iris/<password>@pdb
SQLcl: Release 24.4 Production on Mon Feb 17 05:06:25 2025
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Connected to:
Oracle Database 23ai EE Extreme Perf Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.7.0.25.01
SQL> load tn17 tn17.xlsx show
The provided File extension does not match set loadformat parameter
SQL> set loadformat xlsx
SQL> load tn17 tn17.xlsx show
Show DDL for table IRIS.TN17
CREATE TABLE IRIS.TN17
(
年度 VARCHAR2(26),
FISCAL_YEAR VARCHAR2(26),
系統 VARCHAR2(26),
駅 VARCHAR2(26),
乗車人員総数 VARCHAR2(26),
乗車人員定期 VARCHAR2(26),
乗車人員普通 VARCHAR2(26)
)
;
SUCCESS: Processed without errors
1行目を列名としてDDLを生成しています。
カラム長は実データの長さが反映されていませんので、修正が必要のようです。
データのロード
上述のDDLを参考に、事前にロード先として作成した表(tn17)にロードしてみます。
SQL> load tn17 tn17.xlsx
Load data into table IRIS.TN17
#ERROR Insert failed for row 1
#ERROR 駅: Unable to format column
#ERROR Row 1 data follows:
平成25,2013,総数,,3317344,1962690,1354654
#ERROR Insert failed for row 156
#ERROR 駅: Unable to format column
#ERROR Row 156 data follows:
平成29,2017,京葉線,,52770,31731,21038
#INFO Number of rows processed: 161
#INFO Number of rows in error: 2
#INFO Last row processed in final committed batch: 161
WARNING: Processed with errors
いくつかの行でエラーがありましたが、ロードができました。
そのほかのオプション
sqlcl で Excelファイルから表を作成するオプション
- CREATE / CREATE_DDL
load tn17 tn17.xlsx create_ddl
Create new table IRIS.TN17
CREATE TABLE IRIS.TN17
(
年度 VARCHAR2(26),
FISCAL_YEAR VARCHAR2(26),
系統 VARCHAR2(26),
駅 VARCHAR2(26),
乗車人員総数 VARCHAR2(26),
乗車人員定期 VARCHAR2(26),
乗車人員普通 VARCHAR2(26)
)
;
#INFO Table created
SUCCESS: Processed without errors
sqlcl で 新規表を作成してロード
SQL> load tn18 tn17.xlsx new
Create new table and load data into table IRIS.TN17
CREATE TABLE IRIS.TN17
(
年度 VARCHAR2(26),
FISCAL_YEAR VARCHAR2(26),
系統 VARCHAR2(26),
LINE VARCHAR2(26),
駅 VARCHAR2(26),
STATION VARCHAR2(26),
マーク VARCHAR2(26),
乗車人員総数 VARCHAR2(26),
乗車人員定期 VARCHAR2(26),
乗車人員普通 VARCHAR2(26)
)
;
#INFO Table created
#ERROR Insert failed for row 1
#ERROR 駅: Unable to format column STATION: Unable to format column マーク: Unable to format column
#ERROR Row 1 data follows:
平成25,2013,総数,Total,,,,3317344,1962690,1354654
#INFO Number of rows processed: 161
#INFO Number of rows in error: 1
#INFO Last row processed in final committed batch: 161
WARNING: Processed with errors
おわりに
sqlcl を使ってExcelの表からDDL作成やデータのロードができました。
制約事項などは下記参考情報を参照ください。