Как написать регулярное выражение для удаления всех операторов вставки SQL для таблиц кэша Drupal? - PullRequest
0 голосов
/ 21 сентября 2011

Я хочу написать регулярное выражение, которое удаляло бы все операторы вставки SQL для таблиц кэша Drupal, такие как cache, cache_bootstrap, cache_bootstrap и т. Д., Из файла дампа базы данных.Я в основном пытался написать регулярное выражение, которое нашло бы текст, который начинается с «INSERT INTO` cache »и заканчивается точкой с запятой.Но я не могу найти правильное выражение для того же.Любые идеи?

Ниже приведен мой код:

<?php

$sql=file_get_contents("C:\Users\akulkarni\Desktop\drupal7.sql");

$matches = array();
preg_match_all('/INSERT INTO `cache([^.]+)`.*?/s', "$sql",$matches , PREG_PATTERN_ORDER);   
var_dump($matches);


?>

Followins является образец текста (обрезается):

'INSERT INTO cache (cid, data, expire, created, serialized) ЗНАЧЕНИЕ ( 'ctools_plugin_files: CTools: Content_Types', 0x613a323a7b733a363a2263746f6f6c73223b613a35333a7b733a31363a22766f636162756c6172795f7465726d73223b4f3a383a22737464436c617373223a333a7b733a333a22757269223b733a38363a2273697465732f616c6c2f6d6f64756c65732f63746f6f6c732f706c7567696e732f636f6e74656e745f74797065732f766f636162756c6172795f636f6e746578742f766f636162756c6172795f7465726d732e696e63223b733a383a2266696c656e616d65223b733a32303a22766f6 ');

' INSERT INTO cache_bootstrap (cid, * тысяча двадцать одна *,expire created serialized) VALUES ( '' bootstrap_modules, 0x613a323a7b733a353a2264626c6f67223b4f3a383a22737464436c617373223a323a7b733a343a226e616d65223b733a353a2264626c6f67223b733a383a2266696c656e616d65223b733a32363a226d6f64756c65732f64626c6f672f64626c6f672e6d6f64756c65223b7d733a373a226f7665726c6179223b4f3a383a22737464436c617373223a323a7b733a343a226e616d65223b733a373a226f7665726c6179223b733a383a2266696c656e616d65223b733a33303a226d6f64756c65732f6f7665726c61 ''); * 1 025 * * тысяча двадцать-шесть * 'INSERT INTO * тысяча двадцать-семь * (* 1 028 *, * тысяча двадцать-девять *, expire, * +1031 *, serialized) ЗНАЧЕНИЯ (' поле: узел: 1' , 0x613a35303a7b733a32313a226669656c645f636f72655f6f726967696e61746f72223b613a313a7b733a333a22756e64223b613a313a7b693a303b613a333a7b733a353a2276616c7565223b733a35363a2243616c69666f726e6961204469766973696f6e206f66204f696c2c2047617320616e642047656f746865726d616c205265736f7572636573223b733a363a22666f726d6174223b4e3b733a31303a22736166655f76616c7565223b733a35363a2243616c69666f726e6961204469766973696f6e206f66204f696'');

* * +1034' INSERT INTO cache_form (cid, data, expire, created, serialized) ЗНАЧЕНИЯ ( 'form_form-0LSlVPgTs2A_g3iXF6RIK1wsrfEqlFO_0BK971FBCEw', 0x613a32333a7b733a31313a222361747472696275746573223b613a313a7b733a353a22636c617373223b613a313a7b693a303b733a32303a2266656174757265732d6578706f72742d666f726d223b7d7d733a383a222366656174757265223b4e3b733a343a22696e666f223b613a373a7b733a353a222374797065223b733a383a226669656c64736574223b733a353a222374726565223b623a303b733a343a226e616d65223b613a363a7b733a363a22237469746c652 ''); 1042 * 'INSERT INTO cache_bootstrap (cid data expire created serialized) VALUES (' ссылки: особенности: все: 0: ан: 0' , 0x613a323a7b733a393a226d696e5f6465707468223b693a313b733a393a226d61785f6465707468223b4e3b7d, 0, 1316550799, 1), ( 'ссылки: особенности: дерево-данные: ан: ec99d3452fef1ede622e66c68ba908b1dad455aa71f5e68648aeec6488b89c88', 0x613a323a7b733a343a2274726565223b613a303a7b7d733a31303a226e6f64655f6c696e6b73223b613a303a7b7d7d, 0, 1316550799, 1), ( 'ссылка: главное меню: всего: 0: ан: 0 ', 0x613a323a7b733a393a226d696e5f6465707468223' ');

1 Ответ

1 голос
/ 24 сентября 2011

Вы можете исключить таблицы из дампа базы данных, используя параметр - ignore-table .Это регулярное выражение поможет вам найти операторы INSERT

INSERT\s+INTO\s+(cache|cache_bootstrap|cache_field|cache_form)[^\;]+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...