Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Formato dati di caricamento Gremlin
Per caricare i dati di Apache TinkerPop Gremlin utilizzando il CSV formato, è necessario specificare i vertici e gli spigoli in file separati.
Lo strumento di caricamento è in grado di caricare da più file vertex e da più file edge in un singolo processo di caricamento.
Per ciascun comando di caricamento, il set di file da caricare deve trovarsi nella stessa cartella nel bucket Amazon S3 ed è necessario specificare il nome della cartella per il parametro source
. I nomi file e le relative estensioni non sono importanti.
Il formato Amazon CSV Neptune segue RFC le specifiche 4180. CSV Per ulteriori informazioni, consulta Common Format and MIME Type for CSV Files
Nota
Tutti i file devono essere codificati in formato UTF -8.
Ogni file ha una riga di intestazione separata da virgola. La riga di intestazione è costituita da intestazioni di colonna di sistema e da intestazioni di colonna delle proprietà.
Intestazioni di colonna di sistema
Le intestazioni di colonna di sistema necessarie e consentite sono diverse per i file di vertice e i file di edge.
Ogni colonna di sistema può essere presente una sola volta in un'intestazione.
Per tutte le etichette viene fatta distinzione tra maiuscole e minuscole.
Intestazioni vertici
-
~id
- Campo obbligatorioUn ID per il vertice.
-
~label
Un'etichetta per il vertice. Sono consentiti più valori di etichetta, separati da punto e virgola (
;
).Se non
~label
è presente, TinkerPop fornisce un'etichetta con il valorevertex
, poiché ogni vertice deve avere almeno un'etichetta.
Intestazioni edge
-
~id
- Campo obbligatorioUn ID per l'edge.
-
~from
- Campo obbligatorioL'ID del vertice from.
-
~to
- Campo obbligatorioL'ID del vertice to.
-
~label
Un'etichetta per l'edge. Gli edge possono avere solo un'etichetta singola.
Se non
~label
è presente, TinkerPop fornisce un'etichetta con il valoreedge
, perché ogni bordo deve avere un'etichetta.
Intestazioni di colonna delle proprietà
È possibile specificare una colonna (:
) per una proprietà utilizzando la sintassi seguente. Per i nomi dei tipi non viene fatta distinzione tra maiuscole e minuscole. Tenere presente, tuttavia, che se all'interno del nome di una proprietà compaiono i due punti, è necessario che siano preceduti da una barra rovesciata: \:
.
propertyname
:type
Nota
Lo spazio, la virgola, il ritorno a destra e i caratteri di nuova riga non sono consentiti nelle intestazioni delle colonne, pertanto i nomi delle proprietà non possono includere questi caratteri.
È possibile specificare una colonna per un tipo di matrice aggiungendo []
al tipo:
propertyname
:type
[]
Nota
Le proprietà edge possono avere solo un singolo valore e verrà generato un errore se viene specificato un tipo di array o un secondo valore.
L'esempio seguente mostra l'intestazione di colonna per una proprietà denominata age
del tipo Int
.
age:Int
Ogni riga del file dovrà avere un valore intero in quella posizione o essere lasciata vuota.
Sono consentiti array di stringhe, ma le stringhe in un array non possono includere il carattere punto e virgola (;
) a meno che non venga preceduto da una barra rovesciata (come in questo caso :\;
).
Specifica la cardinalità di una colonna
A partire da Rilascio 1.0.1.0.200366.0 (26/07/2019), l'intestazione della colonna può essere utilizzata per specificare la cardinalità per la proprietà identificata dalla colonna. Ciò permette allo strumento di caricamento in blocco di rispettare la cardinalità allo stesso modo delle query Gremlin.
Per specificare la cardinalità di una colonna:
propertyname
:type
(cardinality
)
Il cardinality
il valore può essere o. single
set
L'impostazione predefinita presunta è set
; ciò significa che la colonna può accettare valori multipli. Nel caso di file edge, la cardinalità è sempre singola e specificare qualsiasi altra cardinalità fa sì che lo strumento di caricamento generi un'eccezione.
Se la cardinalità è single
, lo strumento di caricamento genera un errore se un valore precedente è già presente quando viene caricato un valore oppure se vengono caricati più valori. Questo comportamento può essere sovrascritto in modo che un valore esistente venga sostituito quando un nuovo valore viene caricato usando il flag updateSingleCardinalityProperties
. Per informazioni, consulta Comando dello strumento di caricamento.
È possibile utilizzare una cardinalità impostando un tipo di matrice, anche se non è generalmente necessario. Di seguito sono elencate le combinazioni possibili:
name:type
: la cardinalità èset
e il contenuto è a valore singolo.name:type[]
: la cardinalità èset
e il contenuto ha valori multipli.name:type(single)
: la cardinalità èsingle
e il contenuto è a valore singolo.name:type(set)
: la cardinalità èset
, corrispondente al valore predefinito; il contenuto è a valore singolo.name:type(set)[]
: la cardinalità èset
e il contenuto ha valori multipli.name:type(single)[]
: questa combinazione è contraddittoria e provoca un errore.
Nella sezione seguente sono elencati tutti i tipi di dati Gremlin disponibili.
Tipi di dati Gremlin
Si tratta di un elenco dei tipi di proprietà consentiti, con una descrizione per ognuno di essi.
Bool (o Booleano)
Indica un campo Booleano. Valori consentiti: false
, true
Nota
Qualsiasi valore diverso da true
verrà trattato come false.
Tipi Numero intero
I valori al di fuori degli intervalli definiti determinano un errore.
Tipo | Intervallo |
---|---|
Byte | Da -128 a 127 |
Breve | Da -32768 a 32767 |
Int | Da -2^31 a 2^31-1 |
Lungo | Da -2^63 a 2^63-1 |
Tipi Numero decimale
Supporta la notazione sia decimale sia scientifica. Inoltre, consente simboli come (+/-) Infinity o NaN. INF non è supportato.
Tipo | Range |
---|---|
Float | IEEE754 a virgola mobile a 32 bit |
Doppio | 754 a virgola mobile a 64 bit IEEE |
I valori float e doppi che sono troppo lunghi vengono caricati e arrotondati al valore più vicino per 24 bit (float) e 53 bit (doppi). Un valore medio viene arrotondato a 0 per le ultime cifre rimanenti a livello di bit.
Stringa
Le virgolette sono facoltative. Per virgole, nuova riga e ritorno a capo viene automaticamente inserito un carattere di escape, se sono inclusi in una stringa racchiusa tra virgolette doppie ("
). Esempio: "Hello,
World"
Per includere le virgolette in una stringa tra virgolette, è possibile inserire il carattere di escape per le virgolette utilizzandone due consecutivi: Esempio: "Hello
""World"""
Sono consentiti array di stringhe, ma le stringhe in un array non possono includere il carattere punto e virgola (;
) a meno che non venga preceduto da una barra rovesciata (come in questo caso :\;
).
Se desideri racchiudere le stringhe in una matrice con le virgolette, devi racchiudere l'intera matrice con una serie di virgolette. Esempio: "String one; String 2; String 3"
Data
Data Java in formato ISO -8601. Supporta i seguenti formati: yyyy-MM-dd
, yyyy-MM-ddTHH:mm
, yyyy-MM-ddTHH:mm:ss
, yyyy-MM-ddTHH:mm:ssZ
Formato di riga Gremlin
Delimitatori
I campi in una riga sono separati da una virgola. I record sono separati da una nuova riga o da una nuova riga seguita da un ritorno a capo.
Campi vuoti
I campi vuoti sono consentiti per le colonne non obbligatorie (ad esempio le proprietà definite dall'utente). Un campo vuoto richiede comunque un separatore virgola. I campi vuoti nelle colonne obbligatorie genereranno un errore di analisi. I valori di stringa vuoti vengono interpretati come valori di stringa vuoti per il campo e non come campi vuoti. L'esempio nella sezione successiva presenta un campo vuoto in ciascun vertice.
Vertice IDs
I valori ~id
devono essere univoci per tutti i vertici in ogni file di vertici. A un singolo vertice nel grafo vengono applicate più righe di vertice con valori ~id
identici. La stringa vuota (""
) è un id valido e il vertice viene creato con una stringa vuota come id.
Bordo IDs
I valori ~id
devono essere univoci anche per tutti gli edge in ogni file di edge. All'unico edge nel grafo vengono applicate più righe di edge con valori ~id
identici. La stringa vuota (""
) è un ID valido e il bordo viene creato con una stringa vuota come id.
Etichette
Le etichette distinguono tra maiuscole e minuscole e non possono essere vuote. Un valore di ""
genererà un errore.
Valori delle stringhe
Le virgolette sono facoltative. Per virgole, nuova riga e ritorno a capo viene automaticamente inserito un carattere di escape, se sono inclusi in una stringa racchiusa tra virgolette doppie ("
). I valori di stringa vuoti ("")
vengono interpretati come un valore di stringa vuoto per il campo e non come un campo vuoto.
CSVSpecificazione del formato
Il formato CSV Neptune segue le specifiche CSV 4180, inclusi RFC i seguenti requisiti.
Sono supportate le terminazioni di riga di entrambi gli stili, Unix e Windows (\ n o\r\n).
Qualsiasi campo può essere racchiuso tra virgolette (doppie).
I campi contenenti un'interruzione di riga, virgolette doppie o virgole devono essere racchiusi tra virgolette (in caso contrario, il caricamento viene interrotto immediatamente).
Un carattere virgolette doppie (
"
) in un campo deve essere rappresentato da due (doppi) caratteri. Ad esempio, una stringaHello "World"
deve essere presente nei dati come"Hello ""World"""
.Gli spazi circostanti tra i delimitatori vengono ignorati. Se una riga è presente come
value1, value2
, viene memorizzata come e."value1"
"value2"
Tutti gli altri caratteri di escape vengono archiviati integralmente. Ad esempio,
"data1\tdata2"
viene archiviato come"data1\tdata2"
. Se i caratteri sono racchiusi tra virgolette, non sono necessari ulteriori caratteri di escape.Sono consentiti campi vuoti. Un campo vuoto viene considerato come un valore vuoto.
Per separare più valori per un campo viene utilizzato il punto e virgola (
;
).
Per ulteriori informazioni, vedete Formato e MIME tipo comuni per CSV i file
Esempio Gremlin
Il diagramma seguente mostra un esempio di due vertici e uno spigolo presi dal TinkerPop Modern Graph.
Di seguito è riportato il grafico nel formato di caricamento di CSV Neptune.
File del vertice:
~id,name:String,age:Int,lang:String,interests:String[],~label v1,"marko",29,,"sailing;graphs",person v2,"lop",,"java",,software
Vista tabulare del file del vertice:
~id | name:String | age:Int | lang:String | Interessi: string [] | ~label |
v1 | "marko" | 29 | ["navigazione», «grafici"] | person | |
v2 | "lop" | "java" | software |
File di edge:
~id,~from,~to,~label,weight:Double e1,v1,v2,created,0.4
Vista tabulare del file di edge:
~id | ~from | ~to | ~label | weight:Double |
e1 | v1 | v2 | creato | 0.4 |
Fasi successive
Ora che hai una maggiore conoscenza dei formati di caricamento, vedi Esempio: caricamento di dati in un'istanza database Neptune.