Aller au contenu
4all.tools

Convertir localement des données JSON plates et SQL

Convertissez des lignes JSON plates vers un sous-ensemble SQL documenté de PostgreSQL ou SQLite, ou importez CREATE TABLE et INSERT admis en JSON.

Espace de travail de l’outil

Convertisseur JSON / SQL

JavaScript est nécessaire pour traiter les fichiers localement dans le navigateur. Aucune donnée n’est envoyée au serveur.

Convertissez des lignes JSON plates en SQL ou importez un sous-ensemble SQL publié en JSON. La conversion commence après votre action.

L’entrée reste dans ce navigateur. Les fichiers sont lus localement et ne sont jamais envoyés.

Cet outil implémente un sous-ensemble documenté, pas un moteur de base de données complet. Référence : PostgreSQL {version} ; UTF8 et standard_conforming_strings activés.

JSON doit contenir des lignes plates d’objets avec des valeurs scalaires. SQL accepte une table, les types scalaires publiés et des instructions INSERT avec toutes leurs colonnes.

SQL est généré sous forme de texte avec le profil choisi. Aucune instruction SQL n’est exécutée.

Limites : entrée 1 000 000 unités UTF-16 / 4 000 000 octets ; fichier 4 000 000 octets ; lignes 10 000 ; colonnes 200 ; positions 75 000.

Le profil limite aussi les instructions SQL, jetons, travail d’analyse, sortie, diagnostics et durée. Les limites restantes de l’entrée sont indiquées ci-dessous.

L’exemple est une fixture locale. Le chargement remplace l’entrée après votre action explicite.

JSON vers SQL

SQL est généré sous forme de texte avec le profil choisi. Aucune instruction SQL n’est exécutée.

JavaScript est nécessaire pour traiter les fichiers localement dans le navigateur. Aucune donnée n’est envoyée au serveur.

Messages et diagnostics

Lorsqu’elles existent, les indications précisent l’instruction SQL, le tuple, la ligne, la colonne de table ou la position physique dans l’éditeur. Les détails internes inconnus sont masqués.

    Convertir des lignes JSON plates en SQL

    Choisissez JSON vers SQL, collez un tableau d’objets JSON (ou un seul objet), sélectionnez PostgreSQL ou SQLite, puis cliquez sur Générer SQL. L’outil réunit les clés de toutes les lignes et les écrit selon leur première apparition. Chaque objet devient une ligne. Les cellules acceptent des chaînes, des nombres finis, des booléens ou null ; les tableaux et objets imbriqués sont rejetés.

    [
      {"id": 1, "name": "Ada", "active": true},
      {"id": 2, "name": "Grace", "active": false}
    ]

    Un null explicite est une valeur. Une propriété absente est différente et est rejetée par défaut. L’option Convertir les absences en NULL remplit la cellule manquante, mais efface la différence entre absence et null explicite. Les colonnes contenant des familles incompatibles, par exemple un nombre dans une ligne et un objet dans l’autre, sont rejetées. Une colonne qui ne contient que des nulls n’a pas de type inférable certain et produit un avertissement.

    Le profil de référence PostgreSQL produit TEXT, BIGINT, NUMERIC et BOOLEAN. SQLite produit TEXT, INTEGER, REAL et BOOLEAN ; SQLite stocke les booléens comme entiers et REAL peut arrondir les décimales. CREATE TABLE est inclus par défaut et peut être retiré ; le SQL généré contient toujours des instructions INSERT. Les identifiants suivent les règles du dialecte, y compris les mots réservés et la limite de 63 octets. Le générateur cite les littéraux chaîne. Aucune instruction SQL n’est exécutée ni envoyée à une base de données.

    Importer le sous-ensemble SQL admis en JSON

    Choisissez SQL vers JSON, collez du SQL ou chargez un fichier local .sql, sélectionnez le profil du dialecte, choisissez 2 ou 4 espaces, puis cliquez sur Convertir en JSON. L’analyseur accepte au plus un CREATE TABLE facultatif, suivi d’instructions INSERT INTO ... (liste complète de colonnes) VALUES (...). Il lit uniquement les valeurs littérales de VALUES et n’évalue pas le SQL.

    PostgreSQL accepte TEXT, BIGINT, NUMERIC et BOOLEAN. Son profil de référence exige UTF8 et standard_conforming_strings activé ; les apostrophes des littéraux sont doublées. SQLite accepte TEXT, INTEGER, REAL et BOOLEAN. Les types non admis, les requêtes SELECT, paramètres, valeurs par défaut, expressions, dumps de schéma, tables multiples et autres constructions hors grammaire publiée sont rejetés. Ce n’est pas un importateur SQL général et il ne se connecte pas aux bases.

    Avec CREATE TABLE, l’ordre et les noms des colonnes définissent les clés des objets JSON. Sans CREATE, la première liste de colonnes INSERT en fixe l’ordre. Les listes suivantes peuvent réordonner ces mêmes colonnes, mais ne peuvent en ajouter ni en omettre. Chaque tuple doit contenir le bon nombre de valeurs et toutes les instructions doivent viser la même table. Une instruction invalide rejette toute l’entrée ; aucune ligne partielle n’est renvoyée. La sortie est toujours un tableau JSON. CREATE TABLE sans INSERT produit [] avec un avertissement. Les noms de table, types déclarés et commentaires SQL ne sont pas exportés en JSON ; le schéma et les commentaires ne sont donc pas conservés et aucune garantie générale de retour au SQL original n’est donnée.

    Précision numérique et stockage

    Les lexèmes numériques JSON et SQL sont vérifiés selon le profil local avant la sortie. Les nombres qui perdraient en précision, dépasseraient la plage finie admise ou compteraient plus de 128 caractères sont rejetés. Le zéro négatif est normalisé en zéro avec un avertissement. Le stockage SQLite REAL peut arrondir les décimales et SQLite représente les booléens par des entiers. Tenez compte de ces différences si un autre moteur ou consommateur lit le texte exporté. Le comportement des chaînes PostgreSQL est décrit pour le réglage requis standard_conforming_strings ; l’outil ne vérifie pas un serveur actif.

    Sortie complète, aperçu et limites

    L’éditeur et les fichiers sélectionnés restent dans ce navigateur. Les fichiers sont lus localement en UTF-8 ; le mode JSON accepte .json et le mode SQL accepte .sql. La conversion est explicite et utilise un Web Worker local annulable. Aucun SQL n’est exécuté, aucune connexion de base n’est ouverte et le texte n’est placé ni dans une URL ni dans le stockage du navigateur.

    L’aperçu en lecture seule est limité à 20 000 unités UTF-16. Copier et télécharger utilisent toute la sortie. En cas d’échec du presse-papiers, une action explicite affiche le texte complet pour une copie manuelle. Les téléchargements contiennent du SQL ou un tableau JSON ; ils n’exportent ni schéma relationnel ni commentaires SQL.

    Le profil limite l’entrée à 1 000 000 unités UTF-16 et 4 000 000 octets UTF-8 ; chaque fichier à 4 000 000 octets ; la profondeur JSON à 200 et les nœuds à 100 000 ; les lignes à 10 000 ; les colonnes à 200 et les positions de cellule à 75 000 ; les instructions SQL à 1 001 et les jetons à 400 000 ; les identifiants à 63 octets UTF-8 ; la sortie à 2 000 000 unités UTF-16 et 8 000 000 octets ; le travail à 4 000 000 unités et 15 000 ms ; et les diagnostics conservés à 100. Les détails de colonnes et de diagnostics sont également limités. Toutes les limites s’appliquent ensemble ; une entrée peut en atteindre une avant les autres.

    Modifier l’entrée, le mode, les options, l’exemple ou le fichier efface le résultat précédent. Effacer conserve le sens actuel et réinitialise les options de ce mode. Une erreur, une annulation, un délai dépassé ou une limite ne produit aucune sortie partielle.