JSON 轉 SQL
免費線上 JSON 轉 SQL 工具,將 JSON 陣列自動轉換為 INSERT 語句,並可同時生成 CREATE TABLE 建表腳本。支援 MySQL、PostgreSQL、SQLite、SQL Server 等 20 多種資料庫方言,自動推斷欄位型別,瀏覽器本地處理不上傳。
相關推薦
關於 JSON 轉 SQL:把 JSON 資料快速匯入關聯式資料庫
JSON 轉 SQL 是指將 JSON 格式的資料(JSON 陣列或 JSON 物件)轉換為關聯式資料庫可執行的 SQL 腳本(INSERT 語句和 CREATE TABLE 語句)的過程。JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,因其結構靈活、跨語言、易於人類閱讀,廣泛用於 API 介面、前後端資料傳輸、設定檔、記錄檔記錄等場景。而關聯式資料庫(MySQL、PostgreSQL、SQLite、SQL Server、Oracle 等)作為企業級資料儲存的主流方案,儲存和查詢資料需要嚴格的表結構和 SQL 語句。把 JSON 資料匯入關聯式資料庫時,就需要將 JSON 轉換為對應的 SQL 腳本。
本工具的核心功能是把 JSON 陣列裡的每個物件轉換為一列資料庫記錄。如果 JSON 是單一物件,工具會將其作為單列資料處理;如果 JSON 是陣列,陣列的每個元素對應一列記錄。物件的 key 被用作資料庫表的欄位名,value 被轉換為對應的 SQL 字面量。整個轉換過程在瀏覽器本地完成,無需後端服務。
型別推斷是 JSON 轉 SQL 的關鍵技術點。JSON 本身只有 6 種基本型別(null、boolean、number、string、array、object),而 SQL 有數十種資料型別(INT、BIGINT、FLOAT、DOUBLE、VARCHAR、TEXT、DATE、TIMESTAMP、BOOLEAN、BIT 等)。本工具的 detectType 函式會按 value 的字面量形式進行智慧推斷:null 對應為 SQL 的 NULL;true/false 對應為 BOOLEAN;整數根據範圍對應為 INT(-2147483648 到 2147483647)或 BIGINT;浮點數對應為 FLOAT/DOUBLE/REAL(按方言差異);符合 ISO 8601 標準的日期/時間字串分別對應為 DATE 或 TIMESTAMP;普通字串長度不超過 255 的對應為 VARCHAR(255),超過的對應為 TEXT。
多列資料中的型別衝突需要特別處理。例如某欄位在第一列是 INT,第二列是 FLOAT,不能直接定義為 INT(會遺失小數)。本工具實作了型別升級機制:當欄位的當前型別與新值型別衝突時,會自動升級到能涵蓋兩種值的型別(INT 升級為 FLOAT)。同時 NULL 不參與型別決策(遇到 NULL 時保持原型別),保證推斷結果穩定。所有列處理完成後,欄位型別才最終確定,因此轉換結果的型別是基於全部資料的全域最佳解。
不同資料庫方言的 SQL 語法差異是另一個技術挑戰。MySQL 用反引號(`name`)包裹識別符,PostgreSQL 和標準 SQL 用雙引號("name"),SQL Server 用方括號([name]);SQLite 沒有原生 BOOLEAN 型別,用 1/0 表示;BigQuery 的整數型別是 INT64,字串是 STRING;Snowflake 的整數是 NUMBER,日期時間是 TIMESTAMP_NTZ;Oracle 的 VARCHAR 是 VARCHAR2,布林用 NUMBER(1);DB2 的文字是 CLOB。本工具透過 DIALECT_CONFIG 集中管理這些差異,根據使用者選擇的方言自動適配識別符引號、資料型別、布林值表示等細節。
CREATE TABLE 語句的自動生成依賴於型別推斷結果。當使用者在設定中開啟「生成 CREATE TABLE」選項時,工具會在 INSERT 語句前輸出 CREATE TABLE 語句:表名來自使用者配置(預設 users),欄位名來自 JSON 物件的 key,欄位型別來自型別推斷結果。對於支援 IF NOT EXISTS 的方言,會自動加上該子句,避免重複建立表報錯;對於不支援的方言(如 Oracle PL/SQL、SQL Server T-SQL),會省略 IF NOT EXISTS 保持相容性。產生的 CREATE TABLE 語句與 INSERT 語句組合成完整的初始化腳本,可在空資料庫中一鍵執行。
批次插入是效能最佳化的關鍵。如果 1 萬列 JSON 資料被轉換為 1 萬條獨立的 INSERT 語句,匯入速度會非常慢(每條語句都要解析、規劃、執行、提交交易)。本工具支援配置批次大小(預設 100,可調 1-1000),將多條記錄合併為一條 INSERT 的多值元組(VALUES (1,2), (3,4), ...),顯著減少 SQL 語句數量,匯入效能可提升 10-100 倍。批次大小需要根據具體資料庫和伺服器配置調整,過大的批次可能導致單條 INSERT 超過 max_allowed_packet 限制。
JSON 格式的容錯是實用功能。現實中使用者提供的 JSON 經常存在小問題:尾隨逗號([{"a":1},])、單引號代替雙引號({'a':1})、缺引號的 key({a:1})、註解(/* */)等。嚴格按 JSON 規範解析這些內容會直接失敗。本工具內建 tryFixJSON 修復函式,會在解析失敗時嘗試自動修復常見錯誤,修復成功後會提示使用者並繼續轉換。這一設計大幅提升了工具的實用性,避免因小錯誤反覆手動調整。
純前端處理是本工具的核心優勢。所有 JSON 解析、型別推斷、SQL 生成都在瀏覽器 JavaScript 中執行,使用 sql-formatter 函式庫做最終的美化處理,不向任何伺服器傳送任何資料。這種設計有兩點好處:第一,JSON 資料可能包含使用者隱私(使用者資訊、訂單資料)、商業敏感(內部業務資料),本地處理避免洩漏風險;第二,轉換速度僅受裝置 CPU 限制,無網路延遲,處理中等規模資料(10MB 以內)幾乎瞬時完成。這與命令列工具(如 jq + sed)相比更易用,與線上服務(如某些需要註冊的轉換網站)相比更安全。
適用場景
- 把 API 回傳的 JSON 資料轉換為 INSERT 語句,匯入 MySQL/PostgreSQL 等關聯式資料庫做業務分析
- 從 JSON 設定檔或資料字典生成 CREATE TABLE 建表腳本,初始化新專案的資料庫表結構
- 把前端 mock 資料或測試資料 JSON 轉換為 SQL 腳本,用於填充測試環境的資料庫
- 資料移轉場景:把 MongoDB/Elasticsearch 匯出的 JSON 資料轉換為 SQL 腳本匯入到關聯式資料庫
- ETL 流程:將上游 JSON 資料來源預處理為標準 INSERT 語句,作為下游資料庫匯入的輸入
- 資料庫備份復原:將關鍵業務資料儲存為 JSON 格式,需要時一鍵轉換為 SQL 腳本快速復原
- 開發協作:前後端約定 JSON 資料格式,後端可一鍵轉換為建表 SQL 與種子資料 SQL
- 教學演示:演示 JSON 資料到 SQL 語句的轉換過程,幫助學習者理解型別對應和批次插入原理
使用方法
- 在左側輸入框貼上 JSON 陣列或 JSON 物件內容,或點擊「上傳」按鈕選擇 .json/.txt 檔案,或點擊「範例」載入內建樣本
- 在工具列右側的下拉選單中選擇目標資料庫方言(MySQL、PostgreSQL、SQLite、SQL Server 等 20 多種)
- 點擊「設定」按鈕配置表名、是否生成 CREATE TABLE、批次插入列數(1-1000)等選項
- 點擊「轉換」按鈕(或按快捷鍵),工具會自動解析 JSON、推斷型別、生成 SQL 並顯示在右側面板
- 查看轉換結果:右側顯示產生的 SQL 腳本、底部狀態列顯示總列數和欄位數
- 點擊「複製」將 SQL 複製到剪貼簿,或點擊「下載」將 SQL 儲存為 .sql 檔案(如 users.sql)
- 將 SQL 腳本貼到資料庫用戶端(Navicat、DBeaver、pgAdmin、MySQL Workbench 等)執行即可完成資料匯入
功能特點
- INSERT 語句批次生成:自動將 JSON 陣列轉換為標準 INSERT INTO 語句,支援批次插入配置(1-1000 列/條)
- CREATE TABLE 建表腳本:可選生成 DDL 語句,自動推斷欄位型別(VARCHAR/INT/BIGINT/FLOAT/BOOLEAN/TIMESTAMP/DATE)
- 20 多種資料庫方言:覆蓋 MySQL/PostgreSQL/SQLite/SQL Server/Oracle/DB2/BigQuery/Snowflake 等主流資料庫
- 智慧型別推斷:自動識別 null/布林/整數/浮點/日期/時間/短長字串,分別對應為最合適的 SQL 型別
- SQL 自動美化:內建 sql-formatter,關鍵字大寫、縮排對齊、VALUES 多值元組結構清晰可讀
- JSON 錯誤自修復:自動修復尾隨逗號、單引號、缺引號等常見 JSON 語法錯誤,提升轉換成功率
- 欄位型別升級機制:多列資料中衝突型別自動升級(如 INT + FLOAT 升級為 FLOAT),保證型別覆蓋所有資料
- 表名與欄位名自訂:表名作為檔名下載(如 users.sql),欄位名直接採用 JSON 物件的 key
- 多種互動方式:支援貼上、檔案上傳、範例資料載入三種輸入方式,滿足不同使用習慣
- 統計資訊即時顯示:轉換後顯示總列數和欄位數,便於核對資料完整性
- 複製與下載:轉換結果可一鍵複製到剪貼簿,或下載為標準 .sql 檔案直接匯入資料庫
- 純瀏覽器本地處理:所有解析和轉換在瀏覽器 JavaScript 中完成,JSON 資料不離開裝置,保護隱私
常見問題
怎麼把 JSON 陣列轉換成 SQL INSERT 語句?
把 JSON 陣列貼到左側輸入框,工具會自動把陣列裡的每個物件轉換為一組 INSERT INTO 語句。物件的 key 作為欄位名,value 自動加引號或保留數字格式,產生的 SQL 可直接複製到 MySQL、PostgreSQL、SQLite 等資料庫用戶端執行。
能從 JSON 自動生成 CREATE TABLE 建表腳本嗎?
可以。在設定中開啟「生成 CREATE TABLE」選項,工具會分析 JSON 中的欄位型別,自動推斷對應的 SQL 資料型別(VARCHAR、INT、BIGINT、FLOAT、BOOLEAN、TIMESTAMP、DATE 等),產生完整的 CREATE TABLE 語句,與 INSERT 語句一起組成可直接執行的 SQL 腳本。
支援哪些資料庫方言?
支援 20 多種主流資料庫方言,包括 MySQL、MariaDB、PostgreSQL、SQLite、SQL Server (T-SQL)、Oracle PL/SQL、DB2、BigQuery、Snowflake、Redshift、DuckDB、ClickHouse、Trino、Spark SQL、Hive、TiDB、SingleStoreDB、N1QL 等。不同方言的識別符引號(反引號、雙引號、方括號)、資料型別(INT64、NVARCHAR、CLOB 等)和布林值表示(TRUE/FALSE、1/0)會自動適配。
工具如何推斷 JSON 欄位的 SQL 型別?
null 對應為 NULL;true/false 對應為 BOOLEAN(SQLite/DB2/SQL Server 轉為 1/0 或 BIT);整數根據範圍對應為 INT 或 BIGINT(超過 2147483647 自動升為 BIGINT);浮點數對應為 FLOAT/DOUBLE/REAL(按方言);ISO 8601 日期/時間字串自動識別為 DATE 或 TIMESTAMP;短字串對應為 VARCHAR(255),超過 255 字元的對應為 TEXT。多列資料中衝突型別會自動升級(如 INT + FLOAT 升級為 FLOAT)。
產生的 SQL 檔案能直接匯入資料庫嗎?
可以。產生的 SQL 符合目標方言的標準語法,可直接在 MySQL Workbench、Navicat、DBeaver、pgAdmin、SQL Server Management Studio、phpMyAdmin 等資料庫管理工具中執行。下載後的檔案副檔名為 .sql,表名作為檔名(如 users.sql),便於在資料庫用戶端批次匯入。
JSON 解析失敗怎麼辦?
如果 JSON 存在尾隨逗號、缺引號、單引號代替雙引號等常見語法錯誤,工具會自動呼叫 tryFixJSON 修復函式嘗試修復並繼續轉換。如果修復後仍無法解析,會在右側顯示具體錯誤位置和原因,便於定位問題。複雜嵌套的非法 JSON 建議先用「JSON 格式化」工具檢查。
支援批次插入嗎?一條 INSERT 可以插入多少列?
支援。預設每條 INSERT 插入 100 列(可設定 1-1000)。將大量 JSON 資料轉換為 SQL 時,批次插入可大幅減少 SQL 語句數量,顯著提升資料庫匯入速度。例如 1 萬列 JSON 資料會被打包為 100 條 INSERT,每條包含 100 個 VALUES 元組,相比逐列插入效能可提升 10-100 倍。
上傳的 JSON 資料會儲存到伺服器嗎?
不會。本工具是純前端應用,所有 JSON 解析、型別推斷、SQL 生成都在瀏覽器本地 JavaScript 中完成,不向任何伺服器傳送內容。檔案上傳透過瀏覽器原生 FileReader API 讀取,轉換完成後重新整理頁面即清除。即使處理含使用者隱私、商業敏感的 JSON 資料也不會洩漏。
JSON 中的日期字串會被正確識別嗎?
會的。工具會自動識別兩種 ISO 8601 格式:含 T 分隔符的(如 2024-05-20T10:30:00)對應為 TIMESTAMP 類型;僅含日期的(如 2024-05-20)對應為 DATE 類型。識別準確率取決於字串是否符合 ISO 8601 標準,非標準格式(如 2024/05/20、May 20, 2024)會被當作普通 VARCHAR 字串處理。
工具支援多大的 JSON 檔案?
理論上無硬性上限,受瀏覽器記憶體限制。一般 10MB 以內的 JSON 檔案可流暢處理(可包含數萬到數十萬列資料),更大的檔案可能因瀏覽器記憶體不足變慢。處理超大型檔案時可分批轉換,每批設定合理的表名避免衝突。所有轉換在瀏覽器本地完成,不受網路傳輸限制。
產生的 SQL 會自動格式化美化嗎?
會的。工具內建 sql-formatter 函式庫,會對產生的 SQL 進行自動美化:關鍵字大寫(SELECT、INSERT INTO、VALUES、CREATE TABLE)、每列一條記錄、縮排對齊、保留必要的空行。美化後的 SQL 在資料庫用戶端中閱讀體驗更好,也方便後續人工修改。
能在 INSERT 中指定欄位的順序嗎?
預設按 JSON 中第一個物件出現的 key 順序作為欄位順序,確保多列資料欄位對齊。如果 JSON 陣列中不同物件的 key 順序不一致,工具會自動合併所有 key 並去重,缺失欄位的值用 NULL 填入。建議在轉換前用「JSON 格式化」工具規範化 JSON,確保欄位順序一致。
故障排查
轉換後右側 SQL 面板只顯示「No valid objects found in JSON」?
原因 1:JSON 頂層不是陣列也不是物件(如直接是字串、數字),工具無法轉換為列資料。解決:將 JSON 包裝為陣列 [{...}] 或物件 {...}。原因 2:JSON 陣列中的元素是原始值([1, 2, 3])而非物件,沒有欄位名可對應。解決:每個陣列元素必須是包含 key-value 對的物件。原因 3:JSON 解析失敗被 tryFixJSON 修復後,修復結果仍非物件。解決:檢查 JSON 語法,用「JSON 格式化」工具排查。
轉換後的 SQL 在資料庫中執行時報語法錯誤?
原因 1:選擇了錯誤的方言(如選了 MySQL 但實際是 PostgreSQL 資料庫),引號風格不相容。解決:在下拉選單中選擇正確的目標資料庫方言。原因 2:表名或欄位名包含 SQL 保留字(如 order、user、select)。解決:在設定中修改表名為非保留字,或手動編輯 SQL 用反引號/方括號包裹保留字。原因 3:批次列數過大超過資料庫 max_allowed_packet 限制。解決:在設定中將批次列數調小(如改為 50)。
日期欄位被識別為字串而不是 DATE/TIMESTAMP?
原因:日期字串不符合 ISO 8601 標準格式。本工具僅識別 YYYY-MM-DD(DATE)和 YYYY-MM-DDTHH:mm:ss(TIMESTAMP)兩種格式。常見不識別格式:YYYY/MM/DD、DD-MM-YYYY、May 20 2024、Unix 時間戳(如 1234567890)。解決:先在 JSON 中將日期轉換為 ISO 8601 標準格式,或在轉換後手動修改 CREATE TABLE 的欄位型別為合適的 DATE/VARCHAR 型別。
布林值在 SQLite/DB2 中變成 1/0 而我希望是 TRUE/FALSE?
原因:SQLite、DB2、SQL Server 等方言原生不支援 BOOLEAN 型別,按標準做法用 1/0 或 BIT 整數表示。解決:方案一,接受 1/0 表示(1=TRUE, 0=FALSE,標準做法);方案二,在應用層讀取時轉換(程式語言中 1→true, 0→false);方案三,手動編輯 SQL 將 1/0 替換為 TRUE/FALSE 並改欄位型別為 INTEGER 配合應用層處理。本工具按方言標準做法輸出,不提供非標準選項。
多列 JSON 中相同欄位型別不一致(如一列的 id 是字串,另一列是數字)?
本工具有型別升級機制保證欄位型別能容納所有值。例如某欄位第一列是 INT,第二列是 FLOAT,最終欄位型別升級為 FLOAT。如果某欄位同時存在字串和數字,會按字串優先升級為 VARCHAR。極端衝突(如某列是物件而非原始值)會被序列化為 JSON 字串存為 TEXT。建議轉換前用「JSON 校驗」或「JSON 格式化」工具檢查資料一致性。
下載的 .sql 檔案在資料庫用戶端中匯入後中文亂碼?
原因:.sql 檔案本身是 UTF-8 編碼,但資料庫用戶端或資料庫的字元集配置不是 UTF-8。解決:方案一,將資料庫的字元集設定為 utf8mb4(MySQL)或 UTF8(PostgreSQL)。方案二,在用戶端連線時指定字元集(如 MySQL 命令列用 --default-character-set=utf8mb4)。方案三,用文字編輯器開啟 .sql 檔案確認是 UTF-8 編碼(不是 GBK 或其他)。本工具產生的 .sql 檔案始終是 UTF-8 編碼。
JSON 中包含嵌套物件或陣列,轉換後欄位型別是什麼?
本工具對非原始型別(嵌套物件、陣列)會序列化為 JSON 字串存為 TEXT 型別的欄位。例如 {"tags": ["a", "b"], "profile": {"age": 30}} 會生成 tags TEXT, profile TEXT 兩欄,儲存 JSON 序列化後的字串。查詢時可用 JSON_EXTRACT(MySQL 5.7+)等 JSON 函式提取嵌套欄位。如果需要將嵌套資料展開為多張關聯表,建議在應用層處理或使用專用 ETL 工具。
術語表
- JSON(JavaScript Object Notation)
- 輕量級資料交換格式,基於 JavaScript 物件語法,但獨立於程式語言。支援物件({})、陣列([])、字串、數字、布林、null 六種基本型別。廣泛用於 API 介面、前後端資料傳輸、設定檔、記錄檔等場景。
- SQL(Structured Query Language)
- 結構化查詢語言,關聯式資料庫(MySQL、PostgreSQL、SQLite、SQL Server、Oracle 等)的標準操作語言。包含 DDL(資料定義,如 CREATE TABLE)、DML(資料操作,如 INSERT)、DQL(資料查詢,如 SELECT)、DCL(資料控制)等子集。
- INSERT 語句
- SQL 中用於向表插入資料的 DML 語句,語法為 INSERT INTO table_name (col1, col2) VALUES (val1, val2)。支援單值元組和多值元組(一條 INSERT 多列),後者可大幅提升批次匯入效能。
- CREATE TABLE 語句
- SQL 中用於建立表的 DDL 語句,定義表名、欄位名、資料型別、限制(NOT NULL、PRIMARY KEY、UNIQUE、DEFAULT 等)。本工具產生的 CREATE TABLE 不包含主鍵、外鍵、索引等複雜限制,保持簡潔。
- SQL 方言(SQL Dialect)
- 不同資料庫廠商對 SQL 標準的擴充實作差異。MySQL 用反引號,PostgreSQL 用雙引號,SQL Server 用方括號;SQLite 沒有原生 BOOLEAN 用 1/0;Oracle 用 VARCHAR2;BigQuery 用 INT64 和 STRING。同一邏輯 SQL 在不同方言下語法可能不同。
- DDL(Data Definition Language)
- 資料定義語言,SQL 子集,包含 CREATE、ALTER、DROP 等語句,用於定義和修改資料庫結構(表、檢視、索引、限制等)。本工具產生的 CREATE TABLE 屬於 DDL。
- DML(Data Manipulation Language)
- 資料操作語言,SQL 子集,包含 INSERT、UPDATE、DELETE 語句,用於操作表中的資料列。本工具產生的 INSERT INTO 屬於 DML。
- 型別推斷(Type Inference)
- 在程式語言和工具中根據值的字面量形式自動判斷其型別的過程。本工具根據 JSON value 的 typeof(null/boolean/number/string)和具體形式(ISO 8601 日期、長度等)對應為對應的 SQL 型別。
- 識別符引號(Identifier Quote)
- SQL 中包裹表名、欄位名等識別符的特殊字元。MySQL 用反引號 `name`,PostgreSQL 和標準 SQL 用雙引號 "name",SQL Server 用方括號 [name]。用於保留字轉義或大小寫敏感場景。
- ISO 8601 日期格式
- 國際標準化組織定義的日期時間表示標準,格式為 YYYY-MM-DD(日期)或 YYYY-MM-DDTHH:mm:ss(日期時間)。本工具自動識別符合該格式的字串,分別對應為 SQL 的 DATE 和 TIMESTAMP 型別。
- VARCHAR 與 TEXT
- SQL 中表示字串的兩種型別。VARCHAR(n) 有長度限制(n 通常最大 65535),適合短字串(姓名、Email、標題等);TEXT 無長度限制(或限制很大),適合長文字(描述、內容、備註等)。本工具預設 255 字元以下用 VARCHAR,超過用 TEXT。
- INT 與 BIGINT
- SQL 中表示整數的兩種型別。INT(INTEGER)通常是 32 位元帶正負號整數,範圍 -2147483648 到 2147483647;BIGINT 是 64 位元帶正負號整數,範圍更大。本工具對絕對值超過 INT 範圍的整數自動升級為 BIGINT。
- BOOLEAN 型別
- SQL 中表示真值的型別。MySQL、PostgreSQL、BigQuery 等原生支援 BOOLEAN(儲存 TRUE/FALSE);SQLite 沒有原生 BOOLEAN,用 1/0 或 INTEGER;SQL Server 用 BIT 型別;DB2 用 SMALLINT。本工具按方言自動適配。
- IF NOT EXISTS 子句
- CREATE TABLE 的可選項,用於在表已存在時跳過建立避免報錯。MySQL、PostgreSQL、SQLite、BigQuery 等支援;Oracle PL/SQL 和 SQL Server T-SQL 不支援(需要先判斷再建立)。本工具按方言自動決定是否輸出該子句。
- 批次插入(Batch Insert)
- 將多條資料合併為單條 INSERT 語句的技術,語法為 VALUES (1,2), (3,4), (5,6)。相比逐條插入,可減少 SQL 解析次數和網路往返,匯入效能通常提升 10-100 倍。本工具預設每條 INSERT 包含 100 列,可配置 1-1000。
- sql-formatter
- JavaScript SQL 格式化函式庫,支援 20 多種資料庫方言,能對 SQL 語句進行關鍵字大寫、縮排美化、關鍵字換行等處理。本工具在生成 SQL 後呼叫此函式庫做最終美化,提升可讀性。
支援的資料庫方言與關鍵差異
本工具支援的 20 多種資料庫方言及其識別符引號、資料型別、布林值表示等關鍵差異:
| 方言 | 識別符引號 | 整數型別 | 布林表示 | 支援 IF NOT EXISTS |
|---|---|---|---|---|
| MySQL | 反引號 ` | INT | TRUE | 是 |
| MariaDB | 反引號 ` | INT | TRUE | 是 |
| TiDB | 反引號 ` | INT | TRUE | 是 |
| SingleStoreDB | 反引號 ` | INT | TRUE | 是 |
| PostgreSQL | 雙引號 " | INTEGER | TRUE | 是 |
| Redshift | 雙引號 " | INTEGER | TRUE | 是 |
| DuckDB | 雙引號 " | INTEGER | TRUE | 是 |
| Trino | 雙引號 " | INTEGER | TRUE | 是 |
| SQLite | 雙引號 " | INTEGER | 1/0 | 是 |
| BigQuery | 反引號 ` | INT64 | TRUE | 是 |
| Snowflake | 雙引號 " | NUMBER | TRUE | 是 |
| DB2 | 雙引號 " | INTEGER | 1/0 | 是 |
| DB2i | 雙引號 " | INTEGER | 1/0 | 是 |
| Oracle PL/SQL | 雙引號 " | NUMBER | 1/0 | 否 |
| SQL Server T-SQL | 方括號 [] | INT | 1/0 | 否 |
| Transact-SQL | 方括號 [] | INT | 1/0 | 否 |
| Spark SQL | 反引號 ` | INT | TRUE | 是 |
| Hive | 反引號 ` | INT | TRUE | 是 |
| ClickHouse | 反引號 ` | Int32 | 1/0 | 是 |
| N1QL (Couchbase) | 反引號 ` | NUMBER | TRUE | 是 |
JSON 型別到 SQL 型別的對應規則
本工具的 detectType 函式根據 JSON value 的形式推斷 SQL 型別的完整規則:
| JSON 值 | 範例 | 推斷 SQL 型別 | 判斷規則 |
|---|---|---|---|
null | null | NULL | JSON null 對應為 SQL NULL |
boolean | true / false | BOOLEAN | 原生支援 BOOLEAN 的方言直接用 BOOLEAN,SQLite/DB2/SQL Server 轉為 1/0 或 BIT |
integer (32位) | 1, 100, -9999 | INT / INTEGER | 絕對值 ≤ 2147483647 用 INT |
integer (64位) | 9999999999, -1234567890 | BIGINT | 絕對值 > 2147483647 升為 BIGINT |
float | 3.14, -0.5, 1e10 | FLOAT / DOUBLE / REAL | 浮點數按方言用 FLOAT/DOUBLE/REAL |
ISO 8601 date-time | 2024-05-20T10:30:00 | TIMESTAMP | 符合 /^\d{4}-\d{2}-\d{2}T/ 用 TIMESTAMP |
ISO 8601 date | 2024-05-20 | DATE | 符合 /^\d{4}-\d{2}-\d{2}/ 用 DATE |
short string | Alice, 台北 | VARCHAR(255) | 長度 ≤ 255 用 VARCHAR(255) |
long string | 超過 255 字元 | TEXT | 長度 > 255 用 TEXT(CLOB/NVARCHAR(MAX)/STRING 等方言差異) |
JSON 轉 SQL 與其他格式轉換工具的對比
本工具與 JSON 轉 CSV/Excel/YAML 等其他格式轉換工具的能力差異:
| 能力維度 | JSON 轉 SQL | JSON 轉 CSV | JSON 轉 YAML | JSON 轉 XML |
|---|---|---|---|---|
| 輸出可執行 SQL | ✓ (含 DDL+DML) | ✗ | ✗ | ✗ |
| 資料庫方言支援 | 20+ 種 | 通用 | 通用 | 通用 |
| 欄位型別自動推斷 | ✓ (含方言適配) | ✗ (純文字) | 通用型別 | 通用型別 |
| 批次插入最佳化 | ✓ (可配置 1-1000) | ✗ | ✗ | ✗ |
| 表結構 (DDL) 生成 | ✓ | ✗ | ✗ | ✗ |
| 資料匯入資料庫 | ✓ (直接執行) | 需手動匯入 | 需手動匯入 | 需手動匯入 |
Privacy & Security
本 JSON 轉 SQL 工具所有操作完全在你的瀏覽器本地完成:JSON 解析、型別推斷、SQL 生成、SQL 美化全部透過瀏覽器 JavaScript 在用戶端執行,不會透過網路向任何伺服器傳送 JSON 內容、上傳的檔案或轉換結果。檔案上傳使用瀏覽器原生 FileReader API 直接讀取到記憶體,不經過任何中介服務。不使用 Cookie 追蹤,不收集任何使用者輸入或使用資料。關閉或重新整理頁面後,所有輸入和輸出內容自動從記憶體清除。適合處理含使用者隱私、商業敏感的業務資料 JSON。
Authoritative References
- MySQLMySQL INSERT 語法官方文件
- PostgreSQLPostgreSQL INSERT 語法官方文件
- SQLiteSQLite INSERT 語法官方文件
- MicrosoftSQL Server INSERT 語法官方文件
- MDNJSON 規範 - MDN Web Docs
- WikipediaISO 8601 日期時間標準 - Wikipedia
- GitHubsql-formatter GitHub 存放庫
- JSON 壓縮
- CSV 轉 JSON
- JSON 轉 CSV
- JSON Diff
- JSON Escape / Unescape
- JSON 扁平化
- JSON 格式化
- JSON 產生器
- JSONPath 查詢
- JSON 合併
- JSON 修復
- JSON Schema 驗證器
- JSON 排序
- JSON Stringify
- JSON 轉 HTML 表格
- JSON 轉 Java
- JSON 轉 Markdown
- JSON 轉 SQL
- JSON 轉 TOML
- JSON 轉 TypeScript
- XML 轉 JSON
- JSON 轉 XML
- YAML 轉 JSON
- JSON 轉 YAML
- JSON 轉 Go
- JSON 轉 Rust
- JSON 轉 Swift
- JSON轉C#
- JSON 轉 C++
- JSON 轉 PHP
- JSON 轉 Python