我一直在阅读有关使用sed
从sql转储中提取数据的stackoverflow,更准确,最终目的是提取特定表的插入,以便仅恢复该表。 / p>
我正在使用它:
sed -n '/LOCK TABLES `TABLE_NAME`/,/UNLOCK TABLES/p' dump.sql > output.sql
我遇到的问题是我们在1行上插入的长度超过50Mb,因此在提取插入时,输出会在行尾之前被剪切掉。 像:
......
(4
3458,'0Y25565137SEOEJ','001','PREPAR',1330525937741,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(43459,'666
我尝试使用awk
甚至简单的grep
,结果相同,该行被删除。
编辑:我在mysql的sql转储中使用它,而我正在使用的系统是Centos 5.2
答案 0 :(得分:1)
你可以试试awk并看看它是否更好(我想是这样):
awk '/LOCK TABLES `TABLE_NAME`/,/UNLOCK TABLES/' dump.sql > output.sql
答案 1 :(得分:0)
但如果它是使用exp
创建的转储文件,则只能导入所需的表
imp user/pass tables=table1,table2 ...