Skip to content
This repository was archived by the owner on Apr 23, 2020. It is now read-only.

Create.RU

Ivan Dudarev edited this page Oct 10, 2017 · 4 revisions

Документация / Создание базы данных

Язык: EN RU

Для создания базы данных используйте класс Converter.

  1. Подготовьте файлы, описывающие интервалы адресов и справочники. Эти файлы должны выглядеть как таблицы реляционной базы данных.

    Пример

    Интервалы адресов /path/to/cvs/networks.csv

    first_ip,last_ip,register_id
    "0.0.0.0","63.255.255.255",89
    "64.0.0.0","127.255.255.255",192
    "128.0.0.0","191.255.255.255",2
    "192.0.0.0","255.255.255.255",17
    

    Файл справочника /path/to/cvs/info.csv.

    Строка с какой-либо информацией (например, копирайт). Вторая строка описывает колонки и тоже не будет использоваться в БД.
    id,interval_num,data1,data2
    2,3,"some info 1","some info 2"
    17,4,"some info 3","some info 4"
    89,1,"some info 5","some info 6"
    192,2,"some info 7","some info 8"
    34,"unused row","some info 9","some info 10"
    
  2. Инициализируйте конвертер.

    $tmpDir = 'path/to/dir/for/temporary/files';
    $converter = new \Ddrv\Iptool\Converter($tmpDir);
  3. Укажите время создания БД.

    /**
     * $time - время в формате unixstamp.
     */
    $converter->setTime(1507638600); // 2017/10/10 15:30:00
  4. Укажите информацию об авторе БД.

    /**
     * $author - строка длиной не более 64 символов.
     */
    $author = 'Name Surname';
    $converter->setAuthor($author);
  5. Укажите лицензию базы данных.

    /**
     * $license - может быть название публичной лицензии, ссылка на лицензионное соглашение или же непосредственно текст лицензии. Длина не лимитирована.
     */
    $license = 'MIT';
    $converter->setLicense($license);
  6. Добавьте подготовленные файлы. Воспользуйтесь методом addCSV() с параметрами:

    • уникальный идентификатор для файла. Обязательный параметр;
    • путь к CSV файлу. Обязательный параметр;
    • количество игнорируемых строк с начала файла (по умолчанию 0);
    • кодировка CSV файла (по умолчанию UTF-8);
    • разделитель колонок в CSV (по умолчанию ,);
    • символ, обрамляющий значение колонки CSV (по умолчанию ");
    • экранирующий символ CSV (по умолчанию ).
    $converter->addCSV('infoCSV','/path/to/cvs/info.csv',2);
    $converter->addCSV('networksCSV','/path/to/cvs/networks.csv',1);
  7. Опишите формат справочника.

    $info = array(
        'interval' => array(
            /**
             * Тип может быть:
             * small - целое число от -128 до 127;
             * int - целое число;
             * long - большое целое число;
             * float - число с плавающей точкой;
             * double - дробное число (удобно использовать для храннения координат);
             * string - строка.
             */
            'type' => 'int',
            /**
             * Номер колонки, содержащей значение параметра. Счёт колонок начинается с 0
             */
            'column' => 1,
        ),
        'caption' => array(
            'type' => 'string',
            'column' => 2,
            /**
             * Для типа string можно добавить параметр transform. Он может быть:
             * low - преобразует строку в нижний регистр;
             * up - преобразует строку в верхний регистр;
             * none - Оставляет строку как есть. Используется по умолчанию.
             */
            'transform' => 'low',
        ),
        'extendedInfo' => array(
            'type' => 'string',
            'column' => 3,
        ),
    );
  8. Добавьте определённый справочник. Воспользуйтесь методом addRegister() с параметрами:

    • название регистра. Обязательный параметр;
    • уникальная строка, идентифицирующая CSV файл (вы её определили при использовании метода addCSV). Обязательный параметр;
    • номер колонки, содержащей идентификатор строки. Счёт колонок начинается с 0;
    • описанный формат справочника.
    $converter->addRegister('info','infoCSV',0, $info);
  9. Определите формат интервалов адресов.

    $networks = array(
        /**
         * Ключ - название справочника;
         * Значение - номер колонки с идентификатором строки справочника.
         */
        'info' => 2,
    );
  10. Добавьте интервалы адресов. Вызовите метод addNetworks() с параметрами:

    • уникальная строка, идентифицирующая CSV файл (вы её определили при использовании метода addCSV). Обязательный параметр;
    • формат IP адреса в CSV файле. Может быть:
      • ip (если IP представлены в обычном формате. Например, 123.123.123.123);
      • long (IP представлен в виде числа. Например, 1361051648);
      • inetnum (IP представлен в виде маски или интервала. Например, 1.0.0.0/24 или 1.0.0.1-1.0.0.255).
    • колонка с начальным адресом диапазона. Счёт колонок начинается с 0;
    • колонка с последний адресом диапазона. Счёт колонок начинаетсяс 0;
    • формат интервалов.
    $converter->addNetworks('networksCSV', 'ip', 0, 1, $networks);
  11. Запустите компиляцию БД

    $errors = $converter->getErrors();
    if (!$errors) {
        $dbFile = 'path/to/created/database.file';
        $converter->create($dbFile);
    } else {
        print_r($errors);
    }

    Дождитесь окончания компиляции и используйте!

Смотрите примеры

Clone this wiki locally