2009-02-12 7 views
10

Dire che ho una vista nel mio database, e voglio inviare un file a qualcuno per creare l'output di quella vista come una tabella nel loro database.Dump vista MySQL come tabella con dati

mysqldump ovviamente esporta solo l'istruzione 'create view ...' (beh, ok, include la tabella create, ma nessun dato).

Quello che ho fatto è semplicemente duplicare la vista come una tabella reale e scaricarla. Ma per un grande tavolo è lento e dispendioso:

create table tmptable select * from myview 

Breve di creare uno script che simula il comportamento di mysqldump e fa questo, c'è un modo migliore?

+0

La vista include una colonna spaziale, con cui ho avuto problemi durante l'importazione utilizzando i file CSV. :( – barryhunter

+1

Kinda chiudendo il ciclo su questo, finalmente ha fatto in modo di riordinare e rilasciare la sceneggiatura che ho escogitato per risolvere questo problema https://github.com/barryhunter/fakedump - lo fa come suggerito, basta eseguire una query come " seleziona * dalla vista "e in pratica lo scrivi in ​​un formato simile a mysqldump. – barryhunter

risposta

4

Un'opzione sarebbe quella di eseguire una query in un file CSV e importarla. Per selezionare in un file CSV:

Da http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/

SELECT order_id,product_name,qty 
FROM orders 
INTO OUTFILE '/tmp/orders.csv' 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
+1

Se non hai accesso alla shell del server mysql, questo non funzionerebbe. Altre soluzioni? –

3

OK, quindi in base al fallimento commento CSV, iniziare con la risposta di Paolo. Apportare la seguente modifica ad esso:

- FIELDS TERMINATED BY ',' 
+ FIELDS TERMINATED BY ',' ESCAPED BY '\' 

Quando hai finito con quello, sul lato delle importazioni si farà un "LOAD DATA INFILE" e utilizzare gli stessi interrotto/chiuso/sfuggito dichiarazioni.

+0

Solo per segnalare che se usi \ tu è necessario sfuggire al carattere di escape, ad esempio "CAMPI TERMINATI DA", "ESEGUITO DA" \\ "". –