-
Notifications
You must be signed in to change notification settings - Fork 0
Create.RU
Документация / Создание базы данных
Язык: EN RU
Для создания базы данных используйте класс Converter.
-
Подготовьте файлы, описывающие интервалы адресов и справочники. Эти файлы должны выглядеть как таблицы реляционной базы данных.
Интервалы адресов
/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"
-
Инициализируйте конвертер.
$tmpDir = 'path/to/dir/for/temporary/files'; $converter = new \Ddrv\Iptool\Converter($tmpDir);
-
Укажите время создания БД.
/** * $time - время в формате unixstamp. */ $converter->setTime(1507638600); // 2017/10/10 15:30:00
-
Укажите информацию об авторе БД.
/** * $author - строка длиной не более 64 символов. */ $author = 'Name Surname'; $converter->setAuthor($author);
-
Укажите лицензию базы данных.
/** * $license - может быть название публичной лицензии, ссылка на лицензионное соглашение или же непосредственно текст лицензии. Длина не лимитирована. */ $license = 'MIT'; $converter->setLicense($license);
-
Добавьте подготовленные файлы. Воспользуйтесь методом 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);
-
Опишите формат справочника.
$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, ), );
-
Добавьте определённый справочник. Воспользуйтесь методом addRegister() с параметрами:
- название регистра. Обязательный параметр;
- уникальная строка, идентифицирующая CSV файл (вы её определили при использовании метода addCSV). Обязательный параметр;
- номер колонки, содержащей идентификатор строки. Счёт колонок начинается с 0;
- описанный формат справочника.
$converter->addRegister('info','infoCSV',0, $info);
-
Определите формат интервалов адресов.
$networks = array( /** * Ключ - название справочника; * Значение - номер колонки с идентификатором строки справочника. */ 'info' => 2, );
-
Добавьте интервалы адресов. Вызовите метод 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);
-
Запустите компиляцию БД
$errors = $converter->getErrors(); if (!$errors) { $dbFile = 'path/to/created/database.file'; $converter->create($dbFile); } else { print_r($errors); }
Дождитесь окончания компиляции и используйте!