2012-03-01 18 views
5

He estado leyendo en stackoverflow sobre el uso de sed para extraer datos de volcados sql, siendo más preciso, el objetivo final es extraer inserciones para una tabla específica para restaurar solo esa mesa.Extrayendo inserción sql con sed, cortes de línea

estoy usando esto:

sed -n '/LOCK TABLES `TABLE_NAME`/,/UNLOCK TABLES/p' dump.sql > output.sql 

El problema que estoy teniendo es que tenemos se inserta en la línea 1 que son más de 50 MB de largo, por lo que al extraer el inserto, la salida se corta antes el fin de la línea. gustan:

...... 
(4 
3458,'0Y25565137SEOEJ','001','PREPAR',1330525937741, 
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 
(43459,'666 

He intentado utilizar awk e incluso simples grep y el resultado es el mismo, la línea se corta.

Editar: Im usar esto en un volcado SQL de MySQL y el sistema que estoy trabajando es un Centos 5.2

+0

dosis 'dump.sql' consiguió cutted? – kev

+0

no, el volcado tiene 85Gb de longitud y este inserto está en el primer 10% del archivo. – Ikaro

+0

¿Has probado esto en otra máquina? Las líneas largas de 50 MB no son tan grandes. Incluso Cygwin puede manejar líneas de aproximadamente 100 MB en Windows. –

Respuesta

0

Pero si se trata de un archivo de volcado creado con exp, puede importar sólo las tablas necesarias con

imp user/pass tables=table1,table2 ... 
+0

Dijo 'MySQL' –

+0

Sí, en una edición después de mi respuesta. Lo cual no predije, lo siento. –

1

Usted puede tratar de awk y ver si es mejor (eso creo):

awk '/LOCK TABLES `TABLE_NAME`/,/UNLOCK TABLES/' dump.sql > output.sql