Command Palette

Search for a command to run...

JSON 을 SQL INSERT 문으로 변환하는 방법

JSON 을 SQL INSERT 문으로 변환하는 방법

T
Toolz Team
|Sep 13, 2026|15 최소 읽기
Google 에서 Toolz.dev 를 선호합니다

데이터 도구 컬렉션의 일부입니다

JSON을 SQL 변환기로

객체의 JSON 배열을 SQL CREATE TABLE 로 변환하고 MySQL,PostgreSQL 또는 SQLite 에 대한 INSERT 문을 변환합니다. infers types,runs client-side.

JSON을 SQL 변환기로를 사용하십시오

내가 다루는 JSON 의 대부분은 API 응답으로 인생을 시작하고 데이터베이스에 끝나야합니다. PostgreSQL 을 통해 Express 및 TypeORM 에서 실행되는 Toolz.dev 백엔드에서 빠른 쿼리,마이그레이션 시드 또는 버그의 로컬 재생산을 위해 테이블에로드하려는 한 서비스에서 JSON 내보내기를 한 시간을 셀 수없이 줄였습니다. 손으로하는 것은 암울합니다: 당신은 a 를 씁니다 CREATE TABLE, 그럼 손타입을 하게 됩니다 INSERT 명령문, 모든 문자열 인용, 모든 아포스트로피 두 배, 어떤 필드가 숫자인지 기억하고 누락된 키를 변환합니다 NULL2 백에서 행 하나를 잘못 가져오고 전체 배치가 실행되지 않습니다.

JSON-SQL 변환기는 이러한 기계적 작업을 수행합니다. 객체 배열을 붙여넣고 데이터베이스 방언을 선택하면 a가 생성됩니다 CREATE TABLE 합리적인 열 유형과 함께 INSERT 모든 행을 불러오는 명령문. 이 안내서는 변환이 어떻게 작동하는지,타입과 인용에 대한 결정,오후를 절약하는 실제 상황을 설명합니다.

TL;DR: X-1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 1000 X 10 JSON을 SQL 변환기로 JSON 개체 배열을 다음으로 바꿉니다 CREATE TABLE 그리고 INSERT mysql,postgresql, SQLite,또는 표준 SQL 에 대한 문. 객체 키를 열로 읽고,데이터에서 각 열 유형을 추론하고,문자열을 이스케이프하고,누락된 키와 널을 로 바꿉니다 NULL및 중첩된 개체를 JSON 으로 저장합니다. 모든 것이 브라우저에서 실행되므로 실제 데이터가 포함된 API 응답은 머신을 떠나지 않습니다. 반대의 경우 또는 표 형식의 소스에 대해서는 을 참조하십시오 CSV 를 SQL 로 그리고 JSON에서 CSV로.

JSON-SQL 변환기는 무엇을 합니까?

근본적으로 다른 방식으로 JSON 과 SQL 모델 데이터를 사용합니다. JSON 은 동적,값별 유형이 있는 중첩된 객체와 배열의 트리입니다. 관계형 테이블은 고정되고 입력된 열의 평면 그리드입니다. 한 곳에서 다른 곳으로 변환하는 것은 일련의 작은 결정이며,도구의 가치는 그러한 결정을 일관되게 내리고 있습니다.

객체의 키를 열 세트로 읽고 각 객체를 행으로 처리한 다음 모든 열에 대해 SQL 유형을 선택한 다음 문을 작성합니다. 출력에는 두 부분이 있습니다: 옵션 CREATE TABLE 이는 추론된 유형으로 열을 선언합니다 INSERT 값을 전달하는 문. 결과를 데이터베이스 클라이언트에 붙여넣거나 마이그레이션의 일부로 저장하거나 파이프로 입력할 수 있습니다 mysql, psql, 또는 sqlite3 명령행에서.

입력은 일반적으로 다음과 같은 개체 배열입니다 [{ "id": 1, "name": "Ada" }, { "id": 2, "name": "Grace" }]. 단일 객체도 작동하여 하나의 행이 됩니다. 수용하지 않을 것은 다음과 같은 기본 값의 배열입니다 [1, 2, 3]는, 열로 변하는 키가 없기 때문에, 추측보다는 그렇게 알려줍니다.

열 유형은 어떻게 추론됩니까?

유용한 변환기와 모든 것을 텍스트 열로 덤프하는 변환기를 구분하는 부분입니다. 각 열에 대해 도구는 모든 행의 값을 스캔하고 모든 행에 맞는 가장 좁은 유형을 선택합니다.

열의 모든 현재 값이 정수이면 열은 정수형이 됩니다. 값이 숫자이지만 소수점이 있는 경우 부동 소수점 유형이 됩니다. 모든 값이 다음과 같으면 true 또는 false을,부울이 됩니다. 모든 값이 중첩된 객체나 배열이면 JSON 타입이 됩니다. 값이 일치하지 않는 열을 포함한 다른 것은 텍스트로 다시 떨어지므로 the INSERT 유형 불일치에 실패할 수 없습니다.

null 그리고 누락된 키는 유형을 결정할 때 건너뜁니다; 실제로는 열만 nullable로 만듭니다. 즉, 대부분의 행에 숫자를 포함하는 열을 의미합니다 null 몇 가지에서는 여전히 숫자로 입력되는데, 이것이 바로 원하는 것입니다.

구체적인 유형 이름은 방언에 따라 다릅니다. 중립 종류 지도는 다음과 같습니다:

추론된 종류 MySQL PostgreSQL SQLite 표준 SQL
정수 INT INTEGER INTEGER INTEGER
소수점 DOUBLE DOUBLE PRECISION REAL REAL
부울 TINYINT(1) BOOLEAN INTEGER BOOLEAN
중첩 JSON JSON JSONB TEXT TEXT
텍스트 VARCHAR(255) TEXT TEXT TEXT

유형 추론을 완전히 끌 수 있으며,이 경우 모든 열이 텍스트가 됩니다. 이는 데이터를 스테이징 테이블에 로드하고 나중에 캐스팅할 계획을 세울 때 원하는 경우가 있습니다.

실제 데이터의 어색한 부분을 어떻게 처리합니까?

진짜 JSON 는 드물게 획일하,변환은 대처해야 합니다. 공구는 순진한 변환기를 위로 넘어지는 3 개의 케이스를 취급합니다.

먼저,키가 다른 객체입니다. 만약 하나의 객체가 email 필드와 다른 하나는 그렇지 않습니다. 열 세트는 나타나는 모든 키의 합집합이며 처음 본 순서로 유지되며 키가 없는 개체는 모두 가져옵니다 NULL 그 열에서. 도구는 물체가 균일하지 않을 때 경고하므로 놀라지 않습니다.

둘째, 중첩된 객체와 배열입니다. SQL 열은 평평하므로 다음과 같은 값이 있습니다 { "street": "1 Main St", "city": "London" } 모양을 결정하지 않으면 자동으로 여러 열이 될 수 없습니다. 대신 변환기는 중첩된 값을 JSON 텍스트로 다시 직렬화하고 MySQL 의 JSON 열,PostgreSQL 의 JSONB 열 또는 다른 곳의 텍스트 열에 저장합니다. 구조는 그대로 유지되며 나중에 데이터베이스's JSON 함수로 쿼리할 수 있습니다.

셋째,한 열에 혼합 유형. 필드가 한 레코드의 숫자이고 다른 레코드의 문자열인 경우 숫자 유형을 강제하면 삽입물의 절반이 실패합니다. 도구는 불일치를 감지하고 열을 텍스트로 입력한 다음 모든 값을 문자열 리터럴로 인용하므로 배치가 깔끔하게 실행됩니다.

가치는 어떻게 탈출하는가?

올바른 이스케이프는 실행되는 스크립트와 47행에 구문 오류를 발생시키는 스크립트의 차이입니다. 변환기가 적용하는 규칙은 표준 SQL 규칙입니다.

텍스트 값은 작은따옴표로 감싸고, 값 안의 작은따옴표는 두 배가 됩니다 O'Brien 된다 'O''Brien'. 이것은 ANSI SQL 문자열 이스케이프이며 네 가지 방언 모두에서 작동합니다. 인용된 숫자는 대부분의 엔진에서 문자열이기 때문에 숫자와 부울은 따옴표 없이 작성됩니다. 부울은 다음과 같이 렌더링됩니다 TRUE 그리고 FALSE postgresql 및 표준 SQL 및 as 1 그리고 0 mysql 및 SQLite에서 각 엔진이 이를 저장하는 방식을 일치시킵니다. null 그리고 누락된 키는 인용되지 않은 키워드가 됩니다 NULL.

테이블과 열 이름을 의미하는 식별자도 인용되며 MySQL의 백틱과 다른 모든 곳의 큰따옴표가 있습니다. 그러면 열 이름이 유지됩니다 order 또는 select 예약어와의 충돌에서.

JSON to SQL Converter를 사용하는 방법

1 단계: JSON 붙여넣기

개체 배열을 드롭하거나 샘플 로드 를 눌러 예상 모양을 확인합니다. 각 개체는 하나의 행이 됩니다.

2 단계: 테이블 이름을 지정하고 방언을 선택합니다

대상 테이블 이름을 입력하고 MySQL,PostgreSQL, SQLite 또는 표준 SQL 을 선택합니다. 방언은 인용 스타일,유형 이름 및 부울과 중첩 JSON 이 작성되는 방식을 제어합니다.

3 단계: 출력 옵션을 설정합니다

포함할지 여부를 결정합니다 CREATE TABLE는, 열 타입을 유추할 지, 그리고 하나의 멀티 행을 방출할 지를 INSERT 또는 행당 하나의 명령문. 단일 다중 행 삽입이 더 빠르게 로드됩니다; 행당 하나의 명령문은 diff 친화적인 파일을 생성하고 행을 개별적으로 실행할 수 있습니다.

4 단계: SQL 복사하기

생성된 문을 읽고 복사합니다. 스크립트를 데이터베이스 클라이언트에 붙여넣거나 명령줄에서 실행하여 테이블을 빌드하고 로드합니다.

일반적인 사용 사례

API 응답에서 데이터베이스를 시드합니다

기능을 구축하고 있으며 작업할 현실적인 행이 필요합니다. 업스트림 API 에서 JSON 응답을 가져와서 붙여넣으면 a 가 있습니다 CREATE TABLE 그리고 로컬 데이터베이스를 시드할 준비가 된 삽입물. 손 타이핑, 놓친 따옴표 없음.

구성 또는 내보내기를 테이블로 전환합니다

서비스는 데이터를 JSON 배열로 내보냅니다. 배열을 필터링하기 위해 JavaScript 를 작성하는 대신 그것에 대해 임시 SQL 쿼리를 실행하려고 합니다. SQL 로 변환하고 SQLite 로 로드하고 정확히 이를 위해 구축된 언어로 쿼리합니다.

마이그레이션 시드 구축

프레임워크 마이그레이션에는 참조 데이터를 삽입하는 시드 단계가 필요한 경우가 많습니다. Generating the INSERT 알려진 좋은 JSON 픽스처의 명령문은 데이터를 직접 변환하는 대신 마이그레이션에 붙여넣을 수 있는 안정적이고 검토 가능한 블록을 제공합니다.

로컬에서 생산 버그를 재현합니다

버그는 특정 레코드 집합에 대해서만 나타납니다. 해당 레코드에 대한 JSON 을 가져와 삽입으로 변환하고 로컬 데이터베이스에 로드한 다음 프로덕션 데이터베이스를 복사하지 않고 문제를 재현합니다.

다중 행 대 행당 삽입: 무엇을 선택할까요?

다중 행 삽입은 모든 행을 여러 개의 명령문으로 하나의 명령문으로 묶습니다 VALUES 튜플. 데이터베이스가 수백 개가 아닌 하나의 문을 구문 분석하고 계획하기 때문에 컴팩트하고 가장 빠르게 로드됩니다. 대량 로딩을 위해 선택하십시오.

행당 하나의 문은 더 장황하지만 두 가지 장점이 있습니다. 각 행이 자체 줄인 파일을 생성하여 코드 검토에서 깔끔하게 읽고 버전 제어에서 잘 다릅니다. 그리고 한 행이 제약 조건을 위반하면 다른 행은 여전히 성공합니다. 이는 지저분한 데이터를 로드하고 전체 배치를 잃지 않고 어떤 행이 실패하는지 확인하고 싶을 때 편리합니다. 커밋할 시드 또는 아직 완전히 신뢰하지 않는 데이터에 대해 선택하십시오.

생성된 SQL 을 명령행에서 실행하기

스크립트를 가지고 있으면,각 엔진에 한 줄씩 로드하는 것입니다. SQLite 의 경우,출력을 파일에 저장하고 파이프로 입력하십시오: sqlite3 mydata.db < insert.sql 테이블을 만들고 행을 새 데이터베이스 파일로 로드합니다. PostgreSQL 의 경우 psql -d mydb -f insert.sql 명명된 데이터베이스에 대해 전체 스크립트를 실행합니다.For MySQL, mysql -u user -p mydb < insert.sql 같은 작업을 수행합니다. 생성기가 선택한 방언에 대한 식별자를 인용하고 값을 이스케이프하기 때문에 스크립트는 손으로 작성한 SQL 에 일반적으로 필요한 수동 수정 없이 실행됩니다.

단일 다중 행 삽입이 아닌 행당 하나의 문을 생성한 경우 트랜잭션에서 로드를 래핑하는 것은 수행할 가치가 있습니다. 추가하기 BEGIN; 상단과 COMMIT; 맨 아래에는 수백 개의 개별 인서트가 하나의 원자 작업으로 바뀌며,이는 더 빠르고 안전합니다: 나중의 행이 제약 조건에 실패하면 테이블을 절반으로 채우는 대신 전체 로드가 롤백됩니다. 다중 행 인서트의 경우 이는 단일 명령문이므로 이미 효과적으로 원자적입니다.

대형 어레이의 성능 및 한계

변환 자체는 입력의 크기에서 선형이며 브라우저에서 완전히 실행되므로 수천 개의 행이 즉시 변환됩니다. 실용적인 한계는 도구가 아니라 출력으로 수행하는 작업에 있습니다. 단일 다중 행 INSERT 수만 개의 튜플을 사용하면 데이터베이스&#39;s 최대 문 크기 또는 패킷 제한을 초과할 수 있으며 MySQL&#39;s max_allowed_packet 사람들이 먼저 치는 한 사람이 되는 것. 매우 큰 배열을 로드하는 경우 행당 하나의 명령문으로 전환하여 각각이 작게 되거나 입력을 수백 행의 배치로 분할하여 별도로 변환합니다.

또한 알만한 가치가있는 정밀 주의 사항이 있습니다. JSON 숫자는 browser&#39;s JSON 엔진에 의해 표준 이중 정밀도 플로트로 구문 분석되므로 JavaScript&#39;s 안전한 정수 범위를 넘어 약 9 천조보다 큰 정수는 도구가보기 전에 정밀도를 잃을 수 있습니다. 이는 변환기가 아닌 모든 환경에서 JSON 구문 분석의 속성이지만 거대한 숫자 ID 가 소스 JSON 에서 문자열로 더 안전하게 표현된다는 것을 의미하며 도구는 텍스트로 저장하고 정확하게 보존합니다.

이것이 다른 도구에 맞는 곳

JSON to SQL 은 소규모 제품군의 한 방향입니다. 소스가 JSON 이 아닌 스프레드시트 또는 CSV 내보내기인 경우 CSV 를 SQL 로 동일한 타입 추론과 이스케이프를 가진 테이블형 입력으로부터 동일한 작업을 수행합니다. 데이터베이스 대신 플랫 파일로 데이터가 필요할 때, JSON에서 CSV로 배열을 행으로 평평하게 만듭니다 CSV에서 JSON 다른 방향으로 돌아갑니다. 여러분이 어떤 것을 변환하기 전에, JSON 포맷터 는 pretty-print 하고 JSON 을 유효성 검사하여 구문 분석 오류가 되기 전에 길 잃은 쉼표를 잡을 것입니다. 그리고 일단 SQL 이 있으면 SQL 포맷터 커밋한 것을 자랑스럽게 생각하는 마이그레이션 파일에 대한 문을 들여쓰기하고 정렬합니다.

변환기 서비스에 데이터를 업로드하는 대신 브라우저에서 이 모든 작업을 수행하는 이유는 다음과 같습니다 온라인 도구의 데이터 개인 정보 보호 가이드는 클라이언트 측 모델을 제시합니다 웹 개발자 툴킷 데이터 변환 작업과 잘 페어링되는 유틸리티를 수집합니다.

자주 묻는 질문

JSON 을 SQL 로 변환하려면 어떻게 해야 하나요?

JSON 배열의 객체를 붙여넣고,테이블 이름을 설정하고,SQL 방언을 선택합니다. 이 도구는 객체 키를 열 이름으로 읽고,각 열 유형을 추론하고,데이터베이스에서 복사하고 실행할 수 있는 CREATE TABLE plus INSERT 문을 생성합니다.

어떤 JSON 모양을 수용합니까?

객체의 배열은 각 객체가 하나의 행인 일반 입력입니다. 단일 객체도 작동하여 하나의 행을 생성합니다. 기본 요소 또는 크게 일치하지 않는 모양의 배열은 예상되는 내용을 설명하는 오류와 함께 거부됩니다.

어떤 SQL 데이터베이스가 지원됩니까?

변환기는 MySQL,PostgreSQL, SQLite,표준 SQL 에 대한 문을 출력합니다. 선택한 방언은 식별자 인용,유형 및 부울 구문,네이티브 JSON 유형을 제어하므로 스크립트는 편집 없이 해당 데이터베이스에서 실행됩니다.

컬럼 타입은 어떻게 결정되나요?

각 열은 모든 객체에 대해 검사됩니다. 모든 현재 값이 정수이면 정수 유형이 되고,모든 숫자는 십진수 유형이 되며,모든 참 또는 거짓 값은 부울 유형이 되고,모든 객체 또는 배열은 JSON 유형이 되며,혼합된 모든 것은 텍스트가 됩니다.

중첩된 객체와 배열은 어떻게 되나요?

JSON 텍스트로 다시 직렬화되어 MySQL 의 JSON 열,PostgreSQL 의 JSONB 열 또는 SQLite 및 표준 SQL 의 TEXT 열에 저장됩니다. 이렇게하면 구조를 그대로 유지하므로 나중에 데이터베이스 JSON 함수로 쿼리 할 수 있습니다.

내 개체의 키가 다른 경우 어떻게 합니까?

괜찮습니다. 열은 나타나는 모든 키의 합집합이며,처음 본 순서대로 유지됩니다. 해당 키 중 하나가 누락된 모든 개체는 해당 열에서 NULL 을 가져오며,도구는 개체가 균일하지 않을 때 경고합니다.

문자열과 따옴표는 어떻게 이스케이프됩니까?

텍스트 값은 작은따옴표로 감싸고 값 안의 작은따옴표는 두 배가 되는데,이는 표준 SQL 이스케이프입니다. 숫자와 부울은 인용되지 않은 채로 남겨지고 null 은 NULL 이 되며 식별자는 MySQL 의 백틱 또는 다른 방언의 큰따옴표로 인용됩니다.

내 json이 아무데나 업로드됩니까?

아니요. 파싱 및 SQL 생성은 브라우저에서 JavaScript 로 실행됩니다. 아무것도 전송,로그 또는 저장되지 않으며 도구가 로드된 후에도 오프라인으로 계속 작동하므로 변환하는 동안 네트워크 탭을 보고 확인할 수 있습니다.


Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!