本文へスキップ

Excel を Oracle に変換

Excel ファイルをドロップすると、CREATE TABLE と INSERT 文を含む Oracle 用のスクリプトができます。各列に型を付け、すべての修正を行と列とともに一覧にします。

ファイル
xlsxclientes_2024.xlsxサンプルファイル、7 KB
データベース

4 行を変換、修正 10 件、却下なし

表示
clientes_2024.xlsx の先頭の行です。修正した箇所に印が付いています
行
500127Peña Muñoz0123403/02/2024sí1.234,50
600128José Ángel0987015/02/2024noN/A
700129Zoë Ortíz4410029/02/2024sí-12,00
800130Ñuño Castañeda0670011/03/2024no980,75
-- Written by IntoSQL for Oracle.

SET DEFINE OFF

CREATE TABLE clientes_2024 (
    no_cliente VARCHAR2(8 CHAR) NOT NULL,
    nombre VARCHAR2(16 CHAR) NOT NULL,
    c_p VARCHAR2(8 CHAR) NOT NULL,
    alta DATE NOT NULL,
    activo NUMBER(1) NOT NULL,
    saldo NUMBER(6,2)
);
COMMENT ON COLUMN clientes_2024.no_cliente IS 'Nº Cliente';
COMMENT ON COLUMN clientes_2024.c_p IS 'C.P.';

INSERT ALL
    INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES ('00127', 'Peña Muñoz', '01234', DATE '2024-02-03', 1, 1234.50)
    INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES ('00128', 'José Ángel', '09870', DATE '2024-02-15', 0, NULL)
    INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES ('00129', 'Zoë Ortíz', '44100', DATE '2024-02-29', 1, -12.00)
    INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES ('00130', 'Ñuño Castañeda', '06700', DATE '2024-03-11', 0, 980.75)
SELECT 1 FROM DUAL;

COMMIT;

修正

  1. ヘッダーは 4 行目にあります。その上の行は含めていません。
  2. 9 行目 ("TOTAL") は合計のため、含めていません。
  3. Oracle が引用符なしで読めるよう、列 "Nº Cliente" の名前を no_cliente にしました。
  4. Oracle が引用符なしで読めるよう、列 "C.P." の名前を c_p にしました。
  5. "Nº Cliente" の先頭のゼロを保持しました。00127 は 00127 のまま、テキストとして保存します。
  6. "C.P." の先頭のゼロを保持しました。01234 は 01234 のまま、テキストとして保存します。
  7. 15/02/2024 から "Alta" の日付は日が先とわかるため、03/02/2024 は 2024‑02‑03 として読み取ります。
  8. "Activo" には「はい/いいえ」の語 (sí, no) があるため、ブール値として保存しました。
  9. "Saldo" の数値は小数点にカンマを使っています。1.234,50 は 1234.50 として読み取ります。
  10. "Saldo" の N/A を空として読み取りました(4 件中 1 件)。

ファイルはこのコンピューター上で変換され、アップロードされることはありません。

その他のサンプル:

Excel から Oracle へ、列ごとに

上のサンプル clientes_2024.xlsx を IntoSQL が Oracle 用に書き出した結果です。各列のファイル内の内容、付く型、最初の値がスクリプトでどうなるかを示します。

ファイル内最初の値列Oracle の型スクリプト内
Nº Cliente00127no_clienteVARCHAR2(8 CHAR)'00127'
NombrePeña MuñoznombreVARCHAR2(16 CHAR)'Peña Muñoz'
C.P.01234c_pVARCHAR2(8 CHAR)'01234'
Alta03/02/2024altaDATEDATE '2024-02-03'
ActivosíactivoNUMBER(1)1
Saldo1.234,50saldoNUMBER(6,2)1234.50

スクリプトを Oracle に読み込む

ダウンロードされるのは普通の .sql ファイルです。Oracle 付属のツールで実行してください。

ターミナルから

sqlplus user@//localhost/mydb @clientes_2024.oracle.sql

スクリプトは置換変数をオフにする (SET DEFINE OFF) ため、データ内のアンパサンドはそのまま残ります。

データベースツールから

SQL Developer では、スクリプトを開いて Run Script (F5) を選びます。

Excel ファイルと Oracle について知っておくこと

IntoSQL が Excel ファイルから読み取るもの

  • 上にタイトルやメモがあっても見出し行を見つけ、末尾の合計行は除外します。
  • Excel のシリアル値として保存された日付は、1900 年と 1904 年のどちらの日付システムでも正しい日付になります。
  • 00127 のように先頭にゼロがあるコードはテキストのままです。ブックに複数のシートがある場合は、シートを選べます。

Oracle について知っておくこと

  • はい/いいえの値は 1 または 0 を持つ NUMBER(1) になり、どの Oracle バージョンでも使えます。
  • テキストは文字数で長さを指定した VARCHAR2 で、4000 バイトを超えると CLOB になります。Oracle は空のテキストを NULL として保存します。
  • 行は INSERT ALL で挿入され、長い値は SQL*Plus が受け付けるように分割されます。

Oracle で各種類の値がどう保存されるか

値Oracle
はい/いいえNUMBER(1)
整数NUMBER(10)
大きな整数NUMBER(19)
小数NUMBER(p,s)
浮動小数点数BINARY_DOUBLE
日付DATE
時刻INTERVAL DAY(0) TO SECOND
日付と時刻TIMESTAMP
日付と時刻、時差付きTIMESTAMP WITH TIME ZONE
テキストVARCHAR2(n CHAR)CLOB

Excel から Oracle への変換に関する質問

ここに答えがない場合は、お問い合わせページからご連絡ください。担当者が返信します。 お問い合わせページ

Excel を Oracle に変換するには?

このページ上部のコンバーターにファイルをドロップしてください。ヘッダーを見つけ、すべての値を読み取り、行った修正を一覧にしながら Oracle 用のスクリプトを書き出します。スクリプトをダウンロードし、SQL*Plus で実行してください。

ブックのどのシートが変換されますか?

最初の表示されているシートです。ブックに複数のシートがある場合は「シート」オプションが表示され、別のシートを選べます。

Oracle ではどの型を使いますか?

はい/いいえの値は NUMBER(1)、整数は NUMBER(10)、小数は NUMBER(p,s)、日付は DATE、時刻付きの日付は TIMESTAMP、テキストは VARCHAR2(n CHAR) になります。サイズは各列の最も長い値から決まります。

Oracle で先頭のゼロは残りますか?

はい。00127 のようなコードはテキストのまま扱われるため、Oracle では VARCHAR2(8 CHAR) として保存され、スクリプトには '00127' と書かれます。

スクリプトを使わずに Oracle にデータを読み込めますか?

いいえ。スクリプトをダウンロードし、SQL*Plus で実行してください。スクリプトなしの読み込みは、デスクトップアプリかコマンドラインから PostgreSQL、MySQL、MariaDB、SQLite に対して使えます。

Excel ファイルはどのくらいの大きさまで扱えますか?

ブラウザではブック全体を一度に読むため、上限はブラウザがこのページに割り当てるメモリです。デスクトップアプリとコマンドラインはどんなサイズのブックも扱えます。Apple M4 のノートパソコンでは、コマンドラインが 100 万行・117 MB のブックを約 1 秒で変換します。