1

私はmysqldumpファイルからデータを抽出しようとしています。その非常に大きなファイルです。データベースに復元するには数日かかります。sedまたはawkを使用して次のようにデータを抽出しようとしています。

INSERT INTO `CallDetailRecord` VALUES (1706,1340684374803,1340684375823,1340684383013,'2253040012','2253040012','2253040012','4016487697',0,'225304001200','T',1,'','',0,7,1707,'LineTester','1101','57.6.app_linetester.1102@10.40.10.170','',5060,'10.40.10.45',5060,'1000003415761102_app_linetester@10.40.10.170','<sip:12253040012@10.40.10.45:5060>;tag=sansay420992041rdb3914','<sip:14016487697@10.40.10.170>;tag=100000342','200',0,'',0,NULL,'','^A',0,NULL,NULL);
INSERT INTO `CallDetailRecord` VALUES (1707,1340684381526,1340684381526,1340684388725,'3109757108','3109757108','','4016487697',0,'','P',0,'','',0,7,1708,'LineTest','1101','2.20.app_linetest.1103@10.40.10.170','10.40.10.40',5060,'',5060,'212122542-0-2277160422@74.112.124.121','<sip:3109757108@10.40.10.170>;tag=100000667','\"4016487697\" <sip:4016487697@10.40.10.40>;tag=sansay420992112rdb2348','200',0,'',0,NULL,'','^A',0,NULL,NULL);
INSERT INTO `CallDetailRecord` VALUES (1708,1340684380791,1340684381384,1340684389761,'3172850012','3172850012','3172850012','4016487697',0,'317285001200','T',1,'','',0,8,1709,'LineTester','1101','57.13.app_linetester.1102@10.40.10.170','',5060,'10.40.10.45',5060,'10000034357131102_app_linetester@10.40.10.170','<sip:13172850012@10.40.10.45:5060>;tag=sansay420992099rdb5677','<sip:14016487697@10.40.10.170>;tag=100000344','200',0,'',0,NULL,'','^A',0,NULL,NULL);

出力を

1706,1340684374803,1340684375823,1340684383013,'2253040012','2253040012','2253040012','4016487697',0,'225304001200','T',1,'','',0,7,1707,'LineTester','1101','57.6.app_linetester.1102@10.40.10.170','',5060,'10.40.10.45',5060,'1000003415761102_app_linetester@10.40.10.170','<sip:12253040012@10.40.10.45:5060>;tag=sansay420992041rdb3914','<sip:14016487697@10.40.10.170>;tag=100000342','200',0,'',0,NULL,'','^A',0,NULL,NULL
1707,1340684381526,1340684381526,1340684388725,'3109757108','3109757108','','4016487697',0,'','P',0,'','',0,7,1708,'LineTest','1101','2.20.app_linetest.1103@10.40.10.170','10.40.10.40',5060,'',5060,'212122542-0-2277160422@74.112.124.121','<sip:3109757108@10.40.10.170>;tag=100000667','\"4016487697\" <sip:4016487697@10.40.10.40>;tag=sansay420992112rdb2348','200',0,'',0,NULL,'','^A',0,NULL,NULL
1708,1340684380791,1340684381384,1340684389761,'3172850012','3172850012','3172850012','4016487697',0,'317285001200','T',1,'','',0,8,1709,'LineTester','1101','57.13.app_linetester.1102@10.40.10.170','',5060,'10.40.10.45',5060,'10000034357131102_app_linetester@10.40.10.170','<sip:13172850012@10.40.10.45:5060>;tag=sansay420992099rdb5677','<sip:14016487697@10.40.10.170>;tag=100000344','200',0,'',0,NULL,'','^A',0,NULL,NULL

あなたの助けは大歓迎です。

4

2 に答える 2

3

次を使用できます。

ファイルa.awk:

BEGIN { FS = "VALUES \\(" }; 
"INSERT INTO \`CallDetailRecord\` VALUES" { sub( ");$", "", $2 ); print $2 };

走る:

cat mysqldump_file | awk -f a.awk

于 2013-01-15T19:26:51.820 に答える
2

sedの使用:

sed -e 's/^INSERT INTO `CallDetailRecord` VALUES (//' -e 's/);$//' mysqldump_file
于 2013-01-15T19:54:36.480 に答える