2015-10-27 19 views
7

Questo old answer punta a un collegamento su Google App Engine documentation, ma quel collegamento ora riguarda il backup dei dati GAE, non il download.Esportare dati da Google App Engine a csv

Quindi, come scaricare tutti i dati in un CSV? I dati sono piccoli, ovvero < 1 GB

+0

è possibile scaricare questi backup. non è in formato csv, ma probabilmente potresti convertirlo –

+0

Convertire in realtà è il mio problema adesso. Inoltre, posso scaricare questo backup con 'gsutil', giusto? Sembra che non scarichi tutto. – Heisenberg

+0

sì, "probabilmente converti" :) è un dump di leveldb, quindi è un po 'complicato. non ho mai provato i download di gsutil, non sono sicuro di come funzioni. –

risposta

3

È possibile utilizzare appcfg.py per scaricare i dati Kind in formato csv.

$ appcfg.py download_data --help

Usage: appcfg.py [opzioni] download_data

Scarica entità di archivio dati.

Il comando "download_data" scarica le entità del datastore e scrive in file in formato CSV o definito dagli sviluppatori.

+0

da dove proviene appcfg.py? –

+0

Fa parte del motore di app Google sdk –

+0

beh, no, fa parte del sdk Python, non del normale sdk. appcfg.sh non ha quel comando, purtroppo. –

13

avevo provato un paio di diversi approcci per l'esportazione di CSV utilizzando procedura descritta here e here. Ma non potevo neanche lavorare. Quindi, ecco cosa ho fatto (il mio tavolo più grande era di circa 2 GB). Questo funziona in tempi relativamente brevi, anche se sembra un sacco di passi ... meglio che combattere codice casuale che Google potrebbe essere cambiata per ore e ore, troppo:

  1. Andate in Cloud Storage e creare 2 nuovi secchi "DATA_BACKUP "e" data_export ". Puoi ignorarlo se hai già un secchio per conservare le cose.
  2. Passare a "My Console"> Google Datastore> Ammin> Apri amministratore Datastore per il datastore che si sta tentando di convertire.
  3. Controllare l'entità o le entità di cui si desidera eseguire il backup e fare clic su "Entità di backup". Ne ho fatto uno alla volta poiché avevo solo 5 tavoli da esportare, piuttosto che spuntare tutti e 5 contemporaneamente.
  4. Indicare la Google Storage (gs) secchio che si desidera conservare in
  5. Ora vai a Google Big Query (non avevo mai usato prima, ma era torta per andare avanti)
  6. Fare clic sulla piccola freccia verso il basso e seleziona "Crea un nuovo set di dati" e dagli un nome.
  7. Quindi fare clic sulla freccia giù accanto al nuovo set di dati appena creato e selezionare "Crea nuova tabella". Passare attraverso i passaggi per importare selezionando "Cloud Datastore Backup" sotto il passaggio Seleziona dati. Quindi scegliere il backup che si desidera importare in Big Query in modo da poterlo esportare in csv nel passaggio successivo.
  8. Una volta importata la tabella (che era piuttosto veloce per la mia), fare clic sulla freccia giù accanto al nome della tabella e selezionare "Esporta". Puoi esportare direttamente in csv e puoi salvare nel bucket di google che hai creato per l'esportazione e quindi scaricare da lì.

Ecco alcuni consigli:

  • Se i dati sono annidati i rapporti, si dovrà esportare in JSON invece di CSV (offrono anche formato avro qualunque cosa sia)
  • ho usato json2csv per convertire i miei file JSON esportati che non possono essere salvati come CSV. Funziona un po 'lento sui grandi tavoli ma lo fa.
  • Ho dovuto dividere il file da 2 GB in 2 file a causa di un errore di memoria python in json2csv. Ho usato GSplit di dividere i file e controllato fuori della facoltà di cui Altre proprietà> Etichette & intestazioni> non aggiungi tag GSplit ... (questo fatto in modo GSplit non ha aggiunto alcun dato per i file divisi)

Come Ho detto, questo è stato abbastanza veloce anche se è un numero di passaggi. Spero che aiuti qualcuno a evitare un po 'di tempo trascorso a cercare di convertire strani formati di file di backup o eseguire codice che potrebbe non funzionare più.

+5

Questo è pulito, grazie Scott. Vorrei solo aggiungere che, quando al punto 7, dovresti fornire al file l'estensione .backup_info corrispondente all'entità che stai per caricare, quale file è memorizzato nel bucket tra le Entità. –

+0

Grazie. Ho provato i tuoi passi e funziona. Sono solo confuso su quante volte ho bisogno di fare questo. Devo farlo per ogni tavolo? o c'è un modo per esportare tutto in una volta? Grazie – filias

+0

L'ho fatto per ogni tabella @filias. Ho avuto solo 5 o 6 tavoli veramente grandi. Se funziona per te, sarebbe fantastico se tu potessi contrassegnarlo come la risposta corretta. Grazie! – Scott