Convertire NDJSON in SQL

Qui converti NDJSON in SQL gratis e senza account: trascina il file qui sopra e in un paio di secondi il risultato è pronto da scaricare. La conversione avviene dentro il tuo browser, quindi il file non viene mai caricato. Funziona allo stesso modo su Windows, macOS e Linux e anche su iPhone e Android, e continua a funzionare anche se stacchi la connessione.

  • Dove gira Nel tuo browser. Il file non viene mai caricato.
  • Ricostruito SQL funziona in modo diverso da NDJSON. Non è quindi il degrado graduale di un codec con perdita: quello che SQL sa esprimere viene riprodotto fedelmente, e quello che lì non ha un equivalente non sopravvive affatto.
  • Limite di dimensione Fino a 100 MB per file, gratis e senza account.
  • Vale la pena saperlo Gli oggetti annidati vengono appiattiti in colonne. I dati molto annidati perdono la loro forma.

Fino a 100 file alla volta. Formati diversi insieme non sono un problema.

Una riga diventa un’istruzione, e il conteggio è il conteggio delle righe

La mappatura è esattamente diretta come sembra. Ogni riga non vuota della sorgente produce un’istruzione INSERT, quindi l’output ha tante istruzioni quante ne ha record l’input. Nulla nei dati può produrre un ritorno a capo, perché un a capo dentro una stringa è codificato nel JSON.

Quella prevedibilità è la ragione per cui questa coppia è piacevole da usare. Se un caricamento riporta 412.000 righe inserite e il file ne aveva 412.000, il caricamento era completo — nessuna riconciliazione, nessuna domanda su righe parziali.

L’intero file viene letto prima che la prima istruzione sia scritta

Questo è l’unico punto dove un formato sorgente in streaming non compra una conversione in streaming. L’elenco delle colonne deve essere identico in ogni istruzione, ed è costruito dall’unione delle chiavi su tutte le righe — quindi un campo che appare solo nell’ultimo record diventa comunque una colonna.

La conseguenza è un tetto di memoria piuttosto che una fascia di dimensione: l’intero file esiste nella scheda mentre viene convertito. Decine di megabyte sono normali, diverse centinaia è dove un browser comincia a faticare, e oltre, la risposta è dividere il file — NDJSON si divide in sicurezza a qualunque confine di riga.

Tipi di evento misti fanno una tabella piena di NULL

Un flusso di log che emette richieste, errori e completamenti di lavoro in un file ha tre insiemi di chiavi diversi al suo interno. La riconciliazione gestisce questo senza scartare nulla — ogni chiave diventa una colonna, e una riga senza di essa fornisce NULL.

Per un pomeriggio di analisi è spesso accettabile. Per qualcosa che vivrà più a lungo, filtrare il file per tipo di evento e caricare tre tabelle produce uno schema che potete indicizzare sensatamente.

Scrivete voi il CREATE TABLE, dall’intero file

L’output non ha DDL, deliberatamente. Il JSON vi dice che un valore è un numero e non se la colonna è un intero o un numeric con due decimali, se è nullable, qual è la chiave primaria.

Un avvertimento che qui conta più che su file più piccoli: derivate le colonne da una conversione dell’intero file, mai da un campione. Un campo raro che appare in una riga su mezzo milione diventa comunque una colonna in ogni istruzione, e una tabella dichiarata dai primi mille record rifiuterà l’intero caricamento sull’istruzione che lo usa.

I campi annidati diventano colonne con underscore

I record di log strutturati annidano — un oggetto request con un metodo e un percorso — e una tabella relazionale no. Il percorso viene piegato nel nome della colonna con underscore, quindi request.method diventa request_method.

Uno o due livelli producono una tabella che sareste felici di dichiarare. Un record che porta un intero payload serializzato produce una colonna per ogni campo al suo interno, e a quel punto la domanda utile è quale sottoalbero intendiate davvero interrogare.

Escaping, e il backslash che si comporta diversamente in MySQL

I valori sono scritti come letterali SQL: numeri nudi, booleani come TRUE e FALSE, null come NULL, e testo tra virgolette singole con le virgolette interne raddoppiate. Il raddoppio è la forma portabile e ogni motore la legge.

I backslash sono scritti invariati, corretto secondo lo standard SQL e non come MySQL legge una stringa con le impostazioni predefinite, dove un backslash inizia una sequenza di escape. I dati di log ne sono insolitamente pieni — percorsi Windows, espressioni regolari, JSON con escape dentro un campo messaggio.

Far finire un caricamento grande in un tempo ragionevole

Le istruzioni arrivano una per riga senza transazione attorno. Eseguito così com’è, ogni istruzione è la propria transazione con il proprio commit e il proprio round trip, il modo più lento possibile per inserire mezzo milione di righe.

Due modifiche cambiano l’aritmetica. Avvolgere il file in BEGIN e COMMIT è di solito il singolo miglioramento più grande disponibile. Togliere gli indici prima del caricamento e ricrearli dopo è il secondo, e su una tabella con tre indici spesso dimezza di nuovo il tempo.

Quando COPY o LOAD DATA battono un file di INSERT

C’è una dimensione oltre la quale le istruzioni sono lo strumento sbagliato a prescindere da come vengono raggruppate. Ogni motore ha un percorso in blocco — COPY in Postgres, LOAD DATA in MySQL — che legge un file delimitato direttamente e salta del tutto l’analisi delle istruzioni.

Convertire lo stesso NDJSON in CSV o TSV e usare quel percorso è il piano migliore oltre circa centomila righe. Le istruzioni mantengono due vantaggi: girano ovunque un client possa connettersi, e possono essere revisionate e messe in un repository come fixture.

Una riga rotta ferma la conversione prima che inizi a caricare

Se una riga non è JSON valido, la conversione fallisce e il messaggio nomina la riga. Nulla di parziale viene prodotto, il comportamento che volete qui: un file di istruzioni scritto a metà caricato in una tabella è considerevolmente peggio di nessun file.

Una riga malformata in un log di solito significa una scrittura troncata piuttosto che un errore di battitura. Sapere quale riga significa che potete tagliare la coda, contare cosa state scartando e caricare il resto deliberatamente.

La conversione NDJSON in SQL gira in locale

Le istruzioni sono generate da JavaScript in questa scheda del browser. Il file non viene caricato, non c’è account né coda, e il livello gratuito accetta fino a 100 MB, con la memoria come vincolo pratico.

Quella proprietà fa un lavoro reale per questa coppia. I log di eventi sono il file ordinario più sensibile che la maggior parte degli ingegneri maneggia, e la ragione per convertirne uno è di solito un incidente, il peggior momento possibile per inviarlo a terzi.

Come convertire NDJSON in SQL

  1. Trascina il tuo file NDJSON su questa pagina, oppure fai clic per sceglierne uno.
  2. Scegli SQL come destinazione. La conversione avviene nel tuo browser e il file non viene caricato.
  3. Scarica il file SQL finito.

NDJSON o SQL: cosa cambia

NDJSON a confronto con SQL
NDJSONSQL
Nome completoNewline-Delimited JSONIstruzioni INSERT SQL
Estensione del file.ndjson, .jsonl.sql
Tipo di mediaapplication/x-ndjsonapplication/sql
Prima pubblicazione20131986
SpecificaISO/IEC 9075
LicenzaStandard apertoStandard aperto
Situazione attualeAttualeAttuale
Si apre nel browserNessun browserNessun browser
Valutato al suo postoJSON, CSVCSV, Parquet

Aprire il risultato

I programmi di sempre non coincidono: NDJSON si apre in jq e pandas, SQL in PostgreSQL, MySQL e DBeaver, quindi chi riceve il risultato ha bisogno di uno del secondo gruppo.

A che cosa serve ciascun formato

SQL risale al 1986, descritto in ISO/IEC 9075. PostgreSQL, MySQL e DBeaver lo leggono.

SQL è stato pubblicato nel 1986 e NDJSON nel 2013. Il più vecchio è in genere il file più sicuro da consegnare; il più recente fa lo stesso lavoro con meno byte.

Da NDJSON a SQL: domande frequenti

Il mio file NDJSON viene caricato da qualche parte?

No. Questa conversione avviene interamente nel tuo browser, quindi il file non esce dal tuo dispositivo. Puoi controllarlo da solo: apri la scheda di rete degli strumenti per sviluppatori e converti qualcosa. Vedrai la pagina stessa e le richieste di statistica e di pubblicità con cui questo servizio si paga, e nemmeno una che porti il tuo file.

Convertire NDJSON in SQL è gratis?

Sì. Senza account, senza filigrana e senza una quota giornaliera da consumare: gira sulla tua macchina, quindi puoi tornare quante volte vuoi. Il browser lavora file fino a 100 MB, 100 per volta.

Si perde qualità convertendo NDJSON in SQL?

NDJSON e SQL descrivono il contenuto in modi radicalmente diversi. La conversione è quindi una ricostruzione e non una copia: fedele, ma non identica byte per byte. Gli oggetti annidati vengono appiattiti in colonne. I dati molto annidati perdono la loro forma.

Devo installare qualcosa per aprire un file SQL?

Per la conversione no: avviene nel browser che hai già aperto. Per aprire il risultato ti serve poi il programma con cui il tuo dispositivo mostra di solito SQL Insert Statements.

Altro su questi formati