0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

sqlcl で Excelファイルをデータベース表へロードしてみた (2025/02/17)

Posted at

はじめに

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作成やデータのロードができました。
制約事項などは下記参考情報を参照ください。

参考情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?