CSV を Oracle に変換
CSV ファイルをドロップすると、CREATE TABLE と INSERT 文を含む Oracle 用のスクリプトができます。各列に型を付け、すべての修正を行と列とともに一覧にします。
5 行を変換、修正 8 件、却下なし
| 行 | ||||||
|---|---|---|---|---|---|---|
| 5 | 00412 | Peña Muñoz | Mérida | 15/02/2024 | 1.234,50 | sí |
| 6 | 00413 | José Ángel Ruiz | León | 03/02/2024 | 99,90 | no |
| 7 | 00414 | Zoë Ortíz | Querétaro | 29/02/2024 | N/A | sí |
| 8 | 00415 | Ñuño Castañeda | Oaxaca | 28/02/2024 | 7,25 | no |
| 9 | 00416 | Iñaki Olaizola | Mazatlán | 11/03/2024 | 980,75 | sí |
-- 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;
修正
- ファイルは windows‑1252 で書かれていたため、UTF-8 に変換しました。
- ヘッダーは 4 行目にあります。その上の行は含めていません。
- 10 行目 ("TOTAL") は合計のため、含めていません。
- "Folio" の先頭のゼロを保持しました。00412 は 00412 のまま、テキストとして保存します。
- 15/02/2024 から "Fecha" の日付は日が先とわかるため、03/02/2024 は 2024‑02‑03 として読み取ります。
- "Importe" の数値は小数点にカンマを使っています。1.234,50 は 1234.50 として読み取ります。
- "Importe" の N/A を空として読み取りました(5 件中 1 件)。
- "Pagado" には「はい/いいえ」の語 (sí, no) があるため、ブール値として保存しました。
ファイルはこのコンピューター上で変換され、アップロードされることはありません。
その他のサンプル:
CSV から Oracle へ、列ごとに
上のサンプル ventas_2024.csv を IntoSQL が Oracle 用に書き出した結果です。各列のファイル内の内容、付く型、最初の値がスクリプトでどうなるかを示します。
| ファイル内 | 最初の値 | 列 | Oracle の型 | スクリプト内 |
|---|---|---|---|---|
| Folio | 00412 | folio | VARCHAR2(8 CHAR) | '00412' |
| Cliente | Peña Muñoz | cliente | VARCHAR2(16 CHAR) | 'Peña Muñoz' |
| Ciudad | Mérida | ciudad | VARCHAR2(16 CHAR) | 'Mérida' |
| Fecha | 15/02/2024 | fecha | DATE | DATE '2024-02-15' |
| Importe | 1.234,50 | importe | NUMBER(6,2) | 1234.50 |
| Pagado | sí | pagado | NUMBER(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 秒未満で変換します。