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" 열의 앞자리 0을 유지했어요. 000481 값은 000481 그대로 텍스트로 저장돼요.
- "pagado" 열에 예/아니요 단어(sí)가 있어 불리언으로 저장했어요.
파일은 이 컴퓨터에서 변환되고 업로드되지 않아요.
다른 샘플:
JSON 파일 하나, 데이터베이스 여섯 개
위 샘플 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이 첫 오류에서 멈춰요. 스크립트는 하나의 트랜잭션으로 실행되므로, 불러오기에 실패해도 데이터베이스는 그대로예요.
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 같은 키 아래에 그 배열을 담은 객체, 또는 한 줄에 객체 하나(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 같은 키 아래에 그 배열을 담은 객체, 또는 한 줄에 객체 하나(NDJSON)예요. 각 키가 열이 돼요.
데이터베이스별로 어떤 형식을 쓰나요?
데이터베이스마다 달라요. 예/아니요 값은 PostgreSQL에서 boolean, MySQL과 MariaDB에서 tinyint(1), SQL Server에서 bit, Oracle에서 NUMBER(1)이에요. 이 페이지의 표에 값 종류별로 모두 나와 있어요.
앞자리 0이 유지되나요?
네. 000481 같은 코드는 모든 데이터베이스에서 텍스트로 유지되고 '000481'(으)로 쓰여서 0이 사라지지 않아요.
스크립트 없이 데이터를 불러올 수 있나요?
네. 명령줄은 SQLite에 무료로 불러와요. IntoSQL Pro에서는 데스크톱 앱과 명령줄로 PostgreSQL, MySQL, MariaDB에도 불러올 수 있어요. SQL Server와 Oracle은 스크립트를 실행하세요.
JSON 파일은 얼마나 커도 되나요?
한 줄에 객체 하나인 NDJSON은 들어오는 대로 읽어서 브라우저에서도 수 GB 파일을 처리해요. JSON 문서는 통째로 읽으므로 한도는 브라우저가 이 페이지에 주는 메모리예요. 데스크톱 앱과 명령줄은 크기에 상관없이 파일을 처리해요.