JSON を SQL に変換
JSON ファイルをドロップしてデータベースを選ぶと、CREATE TABLE と INSERT 文を含む SQL スクリプトができます。各列に型を付け、すべての修正を行と列とともに一覧にします。
4 行を変換、修正 2 件、却下なし
| 行 | ||||||
|---|---|---|---|---|---|---|
| 2 | 000481 | Peña Muñoz | 2024-02-03T10:15:00Z | 1234.5 | true | |
| 3 | 000482 | José Ángel Ruiz | 2024-02-15T16:40:00Z | 99.9 | false | Entrega en la tarde |
| 4 | 000483 | Zoë Ortíz | 2024-02-29T09:05:00Z | 12 | true | |
| 5 | 000484 | Ñuño Castañeda | 2024-03-11T13:30:00Z | 980.75 | sí | Factura con "RFC" |
-- Written by IntoSQL for PostgreSQL.
SET client_encoding = 'UTF8';
BEGIN;
CREATE TABLE pedidos_2024 (
pedido text NOT NULL,
cliente text NOT NULL,
fecha timestamptz NOT NULL,
total numeric(6,2) NOT NULL,
pagado boolean NOT NULL,
notas text
);
INSERT INTO pedidos_2024 (pedido, cliente, fecha, total, pagado, notas) VALUES
('000481', 'Peña Muñoz', '2024-02-03 10:15:00+00:00', 1234.5, TRUE, NULL),
('000482', 'José Ángel Ruiz', '2024-02-15 16:40:00+00:00', 99.9, FALSE, 'Entrega en la tarde'),
('000483', 'Zoë Ortíz', '2024-02-29 09:05:00+00:00', 12, TRUE, NULL),
('000484', 'Ñuño Castañeda', '2024-03-11 13:30:00+00:00', 980.75, TRUE, 'Factura con "RFC"');
COMMIT;
修正
- "pedido" の先頭のゼロを保持しました。000481 は 000481 のまま、テキストとして保存します。
- "pagado" には「はい/いいえ」の語 (sí) があるため、ブール値として保存しました。
ファイルはこのコンピューター上で変換され、アップロードされることはありません。
その他のサンプル:
1 つの JSON ファイル、6 つのデータベース
上のサンプル pedidos_2024.json の各列に、データベースごとに付く型です。
| ファイル内 | 最初の値 | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|---|
| pedido | 000481 | text | varchar(8) | varchar(8) | TEXT | nvarchar(8) | VARCHAR2(8 CHAR) |
| cliente | Peña Muñoz | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| fecha | 2024-02-03T10:15:00Z | timestamptz | datetime | datetime | DATETIME | datetimeoffset | TIMESTAMP WITH TIME ZONE |
| total | 1234.5 | numeric(6,2) | decimal(6,2) | decimal(6,2) | NUMERIC(6,2) | decimal(6,2) | NUMBER(6,2) |
| pagado | true | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| notas | - | text | varchar(32) | varchar(32) | TEXT | nvarchar(32) | VARCHAR2(32 CHAR) |
スクリプトをデータベースに読み込む
ダウンロードされるのは普通の .sql ファイルです。各データベース付属のツールで実行できます。
PostgreSQL
psql -v ON_ERROR_STOP=1 -d mydb -f pedidos_2024.postgresql.sqlON_ERROR_STOP を付けると、psql は最初のエラーで止まります。スクリプトは 1 つのトランザクションで実行されるため、読み込みに失敗してもデータベースは元のままです。
MySQL
mysql --default-character-set=utf8mb4 mydb < pedidos_2024.mysql.sqlスクリプト自体が utf8mb4 を設定します。このフラグでクライアントも同じ方法で送信するため、アクセント記号が崩れません。
MariaDB
mariadb --default-character-set=utf8mb4 mydb < pedidos_2024.mariadb.sqlスクリプト自体が utf8mb4 を設定します。このフラグでクライアントも同じ方法で送信するため、アクセント記号が崩れません。
SQLite
sqlite3 pedidos_2024.db < pedidos_2024.sqlite.sqlデータベースファイルがなければ作成されます。コンバーターでは、コマンドを使わずにそのまま使える .sqlite データベースもダウンロードできます。
SQL Server
sqlcmd -S localhost -d mydb -f 65001 -i pedidos_2024.sql_server.sql-f 65001 でファイルを UTF-8 として読むため、アクセント記号や ñ は書かれたとおりに届きます。
Oracle
sqlplus user@//localhost/mydb @pedidos_2024.oracle.sqlスクリプトは置換変数をオフにする (SET DEFINE OFF) ため、データ内のアンパサンドはそのまま残ります。
コマンドラインなら、無料でファイルを SQLite データベースに直接読み込めます。IntoSQL Pro では、コマンドラインとデスクトップアプリで PostgreSQL、MySQL、MariaDB にも読み込めます。SQL Server と Oracle ではスクリプトを実行してください。
JSON ファイルと各データベースについて知っておくこと
IntoSQL が JSON ファイルから読み取るもの
- ファイルはオブジェクトの配列、その配列を data などのキーの下に持つオブジェクト、または 1 行に 1 オブジェクト (NDJSON) のいずれでも使えます。
- 各キーが列になります。値の中のオブジェクトや配列は JSON テキストとして保持されます。
- 数値は桁をそのまま保ち、ISO 8601 の日付は日付またはタイムスタンプになります。
各データベースについて知っておくこと
- ファイルを開いたらデータベースを選んでください。それぞれがサポートする型が使われます。
各データベースで各種類の値がどう保存されるか
| 値 | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|
| はい/いいえ | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| 整数 | integer | int | int | INTEGER | int | NUMBER(10) |
| 大きな整数 | bigint | bigint | bigint | INTEGER | bigint | NUMBER(19) |
| 小数 | numeric(p,s) | decimal(p,s)double | decimal(p,s)double | NUMERIC(p,s)TEXT | decimal(p,s) | NUMBER(p,s) |
| 浮動小数点数 | double precision | double | double | REAL | float | BINARY_DOUBLE |
| 日付 | date | date | date | DATE | date | DATE |
| 時刻 | time | time(6)time | time(6)time | TIME | time | INTERVAL DAY(0) TO SECOND |
| 日付と時刻 | timestamp | datetime(6)datetime | datetime(6)datetime | DATETIME | datetime2 | TIMESTAMP |
| 日付と時刻、時差付き | timestamptz | datetime(6)datetime | datetime(6)datetime | DATETIME | datetimeoffset | TIMESTAMP WITH TIME ZONE |
| テキスト | text | varchar(n)textmediumtextlongtext | varchar(n)textmediumtextlongtext | TEXT | nvarchar(n)nvarchar(max) | VARCHAR2(n CHAR)CLOB |
JSON から SQL への変換に関する質問
ここに答えがない場合は、お問い合わせページからご連絡ください。担当者が返信します。 お問い合わせページ
JSON を SQL に変換するには?
このページ上部のコンバーターにファイルをドロップし、データベースを選んでください。PostgreSQL、MySQL、MariaDB、SQLite、SQL Server、Oracle に対応し、それぞれが扱える型を使います。スクリプトをダウンロードし、データベースで実行してください。
JSON ファイルはどんな形式が必要ですか?
オブジェクトの配列、その配列を data などのキーの下に持つオブジェクト、または 1 行に 1 オブジェクト (NDJSON) です。各キーが列になります。
各データベースではどの型を使いますか?
データベースごとに異なります。たとえば、はい/いいえの値は PostgreSQL では boolean、MySQL と MariaDB では tinyint(1)、SQL Server では bit、Oracle では NUMBER(1) になります。値の種類ごとの一覧はこのページの表にあります。
先頭のゼロは残りますか?
はい。000481 のようなコードはどのデータベースでもテキストのまま '000481' と書かれるため、ゼロは失われません。
スクリプトを使わずにデータを読み込めますか?
はい。コマンドラインなら SQLite に無料で読み込めます。IntoSQL Pro では、デスクトップアプリとコマンドラインで PostgreSQL、MySQL、MariaDB にも読み込めます。SQL Server と Oracle ではスクリプトを実行してください。
JSON ファイルはどのくらいの大きさまで扱えますか?
1 行に 1 オブジェクトの NDJSON は流れてくる順に読むため、ブラウザでも数 GB のファイルを扱えます。JSON ドキュメントは全体を一度に読むため、上限はブラウザがこのページに割り当てるメモリです。デスクトップアプリとコマンドラインはどんなサイズのファイルも扱えます。