本文へスキップ

CSV を Oracle に変換

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

ファイル
csvventas_2024.csvサンプルファイル、357 B
データベース

5 行を変換、修正 8 件、却下なし

表示
ventas_2024.csv の先頭の行です。修正した箇所に印が付いています
行
500412Peña MuñozMérida15/02/20241.234,50sí
600413José Ángel RuizLeón03/02/202499,90no
700414Zoë OrtízQuerétaro29/02/2024N/Así
800415Ñuño CastañedaOaxaca28/02/20247,25no
900416Iñaki OlaizolaMazatlán11/03/2024980,75sí
-- Written by IntoSQL for Oracle.

SET DEFINE OFF

CREATE TABLE ventas_2024 (
    folio VARCHAR2(8 CHAR) NOT NULL,
    cliente VARCHAR2(16 CHAR) NOT NULL,
    ciudad VARCHAR2(16 CHAR) NOT NULL,
    fecha DATE NOT NULL,
    importe NUMBER(6,2),
    pagado NUMBER(1) NOT NULL
);

INSERT ALL
    INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00412', 'Peña Muñoz', 'Mérida', DATE '2024-02-15', 1234.50, 1)
    INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00413', 'José Ángel Ruiz', 'León', DATE '2024-02-03', 99.90, 0)
    INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00414', 'Zoë Ortíz', 'Querétaro', DATE '2024-02-29', NULL, 1)
    INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00415', 'Ñuño Castañeda', 'Oaxaca', DATE '2024-02-28', 7.25, 0)
    INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00416', 'Iñaki Olaizola', 'Mazatlán', DATE '2024-03-11', 980.75, 1)
SELECT 1 FROM DUAL;

COMMIT;

修正

  1. ファイルは windows‑1252 で書かれていたため、UTF-8 に変換しました。
  2. ヘッダーは 4 行目にあります。その上の行は含めていません。
  3. 10 行目 ("TOTAL") は合計のため、含めていません。
  4. "Folio" の先頭のゼロを保持しました。00412 は 00412 のまま、テキストとして保存します。
  5. 15/02/2024 から "Fecha" の日付は日が先とわかるため、03/02/2024 は 2024‑02‑03 として読み取ります。
  6. "Importe" の数値は小数点にカンマを使っています。1.234,50 は 1234.50 として読み取ります。
  7. "Importe" の N/A を空として読み取りました(5 件中 1 件)。
  8. "Pagado" には「はい/いいえ」の語 (sí, no) があるため、ブール値として保存しました。

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

その他のサンプル:

CSV から Oracle へ、列ごとに

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

ファイル内最初の値列Oracle の型スクリプト内
Folio00412folioVARCHAR2(8 CHAR)'00412'
ClientePeña MuñozclienteVARCHAR2(16 CHAR)'Peña Muñoz'
CiudadMéridaciudadVARCHAR2(16 CHAR)'Mérida'
Fecha15/02/2024fechaDATEDATE '2024-02-15'
Importe1.234,50importeNUMBER(6,2)1234.50
PagadosípagadoNUMBER(1)1

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

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

ターミナルから

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

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

データベースツールから

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

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

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

  • Windows-1252 や UTF-16 を含め文字コードを判別するので、アクセント記号や ñ もそのまま届きます。
  • 区切り文字を判別します。カンマ、セミコロン、タブ、縦線に対応しています。セミコロン区切りでは、1.234,50 のような小数点のカンマを数値として読み取ります。
  • 引用符で囲まれた値には、区切り文字や改行を含められます。

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

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

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

CSV を Oracle に変換するには?

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

CSV の区切りがセミコロンやタブの場合は?

区切り文字はカンマ、セミコロン、タブ、縦線から自動で検出されます。「その他のオプション」で指定することもできます。セミコロン区切りでは、1.234,50 のような小数点カンマも数値として読み取ります。

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

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

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

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

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

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

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

ブラウザは CSV を流れてくる順に読むため、数 GB のファイルも扱えます。Apple M4 のノートパソコンでは、コマンドラインが 100 万行・174 MB の CSV を 1 秒未満で変換します。