2011-10-12 10 views
8

Ho un grosso dump (decine di GB) e vorrei importarlo in una nuova tabella senza rispettare il parametro ENGINE = INNODB.Come posso eseguire l'override del parametro ENGINE = INNODB durante l'importazione di un file di dettagli MySQL?

Ho provato diversi editor dedicati a file di grandi dimensioni per modificare il dump ma ci vuole sempre molto tempo per salvare le modifiche, quindi avrebbe molto più senso ignorare il parametro ENGINE = INNODB e sovrascriverlo (ad esempio con il motore predefinito).

L'importazione e la successiva modifica del motore non sarebbero un'opzione, dato che InnoDB è estremamente lento nell'importazione del dump, quindi sarebbero necessari giorni.

risposta

5

Se siete su un linux/sistema Unix come su un posto di modifica con sed

sed -i 's/ENGINE=INNODB/ENGINE=MYISAM/g' filename 
+3

Vale la pena ricordare che, nel caso improbabile che alcuni dei dati nel database contiene effettivamente il testo 'ENGINE = INNODB', questo comando corromperà i dati. – Asaph

+1

@Asaph - buon punto. –

+3

usa 'sed -i -re 's/^ (\) ENGINE =) INNODB/\ 1MyISAM/gi'', dovrebbe essere sicuro poiché non dovrebbero esserci righe nuove non codificate nei dati effettivi. –

7

mysqldump --compatible=no_table_options

ha lavorato per me