Domanda

devo importare una grande discarica di mysql (fino a 10G). Tuttavia il dump sql già prestabilite con una struttura di database con definizione dell'indice. Voglio accelerare l'inserto db rimuovendo la definizione dell'indice e la tabella.

Ciò significa che devo rimuovere / modifica le prime righe di un 10 G file di testo. Qual è il modo più efficace per fare questo su linux

I programmi che richiedono il caricamento del intero file in RAM sarà un peso inutile per me.

È stato utile?

Soluzione

Invece di rimozione le prime righe, provare a modificare loro di essere spazi bianchi.

Il programma hexedit può fare questo-- che legge i file in blocchi, in modo da aprire un file da 10 GB non è diverso da aprire un file 100KB ad esso.

$ hexedit largefile.sql.dump
tab (switch to ASCII side)
space (repeat as needed until your header is gone)
F2 (save)/Ctrl-X (save and exit)/Ctrl-C (exit without saving)

Altri suggerimenti

Joe è un editor che funziona bene con file di grandi dimensioni. Ho solo usato per modificare un file di dump ~ 5G SQL. Ci sono voluti circa un minuto per aprire il file e pochi minuti per salvarlo, con molto poco uso di swap (su un sistema con 4G RAM).

sed 's/OLD_TEXT/NEW_TEXT/g' < oldfile > newfile

o

cat file | sed 's/OLD_TEXT/NEW_TEXT/g' > newfile

Perl in grado di leggere il file riga per riga:

perl -pi.bak -e 's / ^ creare l'indice / - creare l'indice /'

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top