Как определить Схемы в файле Экспорта Объекта преобразования данных Oracle

Вы получаете 1, потому что regex_search возвращает только 1 совпадение, а size() возвращает количество групп захвата + все значение соответствия.

Ваш matches is ...:

Объект типа match_results (например, cmatch или smatch), который заполняется этой функцией, с информацией о результатах совпадения и любой найдены подматрицы.

Если [поиск по регулярному выражению] успешный, он не пуст и содержит ряд объектов sub_match: первый элемент sub_match соответствует всему совпадению, если выражение регулярного выражения содержало подвыражения, которые должны быть сопоставлены (т. е. группы с разделителями в скобках), их соответствующие подрежимы сохраняются как последовательные элементы sub_match в объекте match_results.

blockquote>

код, который найдет несколько совпадений:

#include 
#include 
#include 
using namespace std;
int main() {
  string str("abcdefabcghiabc");
  int i = 0;
  regex rgx1("abc");
  smatch smtch;
  while (regex_search(str, smtch, rgx1)) {
        std::cout << i << ": " << smtch[0] << std::endl;
        i += 1;
        str = smtch.suffix().str();
  }
  return 0;
}

См. IDEONE demo , возвращающий abc 3 раза.

Поскольку этот метод уничтожает входную строку, здесь другая альтернатива, основанная на std::sregex_iterator (std::wsregex_iterator, должна использоваться, когда y наш объект является объектом std::wstring):

int main() {
    std::regex r("ab(c)");
    std::string s = "abcdefabcghiabc";
    for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), r);
                             i != std::sregex_iterator();
                             ++i)
    {
        std::smatch m = *i;
        std::cout << "Match value: " << m.str() << " at Position " << m.position() << '\n';
        std::cout << "    Capture: " << m[1].str() << " at Position " << m.position(1) << '\n';
    }
    return 0;
}

См. демонстрацию IDEONE , возвращая

Match value: abc at Position 0
    Capture: c at Position 2
Match value: abc at Position 6
    Capture: c at Position 8
Match value: abc at Position 12
    Capture: c at Position 14

37
задан KyleLanser 20 September 2008 в 03:24
поделиться

3 ответа

Если Вы открываете файл DMP с редактором, который может обработать большие файлы, Вы могли бы быть в состоянии определить местоположение областей, где названия схемы упоминаются. Просто обязательно не измените что-либо. Было бы лучше при открытии копии исходного дампа.

12
ответ дан Petros 23 September 2019 в 20:01
поделиться

Обновление (19.09.2008 10:05) - Решение:

Мое Решение: Социальная инженерия, я вырыл очень трудно и нашел кого-то, кто знал название схемы.
Техническое решение: Поиск .dmp файла сделал , приводят к названию схемы.
, Как только я знал название схемы, я искал файл дампа и изучил, где найти его.

Места, которые называют Схемы, были замечены в .dmp файле:

  • <OWNER_NAME>SOURCE_SCHEMA</OWNER_NAME> Это было замечено перед каждым именем таблицы / определение.

  • SCHEMA_LIST 'SOURCE_SCHEMA' Это было замечено около конца .dmp.

Интересно достаточно, вокруг эти SCHEMA_LIST 'SOURCE_SCHEMA' раздел, этому также использовали командную строку для создания дампа, используемые каталоги, используемые файлы паритета, версия для Windows, на этом работали, и настройки сессии экспорта (язык, форматы даты).

Так, проблема решила:)

10
ответ дан KyleLanser 23 September 2019 в 20:01
поделиться

Предположение, что у Вас нет файла журнала от expdp задания, которое генерировало файл во-первых, самая легкая опция, должно будет, вероятно, использовать , параметр SQLFILE для имения impdp генерирует файл DDL (на основе полного импорта). Тогда можно захватить названия схемы из того файла. Не идеальный, конечно, так как impdp должен считать весь файл дампа, чтобы извлечь DDL и с другой стороны добраться до схемы, которой Вы интересуетесь, и необходимо сделать немного текстового файла, ищущего различные операторы CREATE USER, но это должно быть выполнимо.

6
ответ дан Sebas 23 September 2019 в 20:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: