Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Загрузка в базу данных реляционных таблиц из текстового файла
Рассмотрим случай, когда требования к содержанию полей таблицы минимальны. Тогда можно совместить описание атрибутов таблицы с загрузкой данных. Это будет начальное описание атрибутов таблицы. В дальнейшем средствами работы со справочником базы данных можно существенно дополнить или изменить параметры атрибутов, а также дополнить описание таблицы множеством параметров. Данное решение определяет требование к формату представления таблицы для начальной загрузки. Исходные данные для загрузки будем представлять в виде текстового файла. Хорошо известен текстовый формат CSV(от англ. CommaSeparated Values — значения, разделенные запятыми), предназначенный для представления табличных данных. Каждая строка файла — это одна строка таблицы. Значения отдельных колонок разделяются разделительным символом (delimiter) — запятой (,). Однако большинство программ вольно трактует стандарт CSV и допускает использование иных символов в качестве разделителя. В полях таблицы с текстовой информацией часто встречаются запятые. Запятые могут использоваться как десятичный разделитель. Замена разделителя на точку с запятой обычно требует поместить содержимое полей таблицы в обрамляющие двойные кавычки (“); если в значении встречаются кавычки, они представляются в файле в виде двух кавычек подряд. Другим решением является использование в качестве разделителей символов табуляции (0x0D). В любом случае требуется программно проверять количество разделителей в каждой строке текстового файла. Строки разделяются парой символов CR LF (0x0D 0x0A). На сегодняшний день под CSV, как правило, понимают набор значений, разделенных какими угодно разделителями, в какой угодно кодировке с какими угодно окончаниями строк. Определим текстовый файл (*.txt), представляющий таблицу следующим образом: • разделителями полей таблицы в файле являются табуляторы (0x09); • строки разделяются парой символов CR LF (0x0D 0x0A) • в первой строке файла дается кодировка полей таблицы, задаются коды полей через разделители; • во второй строке дается русское название всех полей таблицы через разделители (названия столбцов таблицы); • далее идут строки, соответствующие записям таблицы, где даются значения полей через разделители. Пустым значениям соответствуют два разделителя, идущие подряд;
• первым параметром каждой строки таблицы указывается номер строки. Для номера строки резервируем код поля P001; • в каждой строке на втором месте стоит название таблицы; • название таблицы считаем обычным полем, для которого резервируем код P002; • за названием поля, в котором будет стоять имя таблицы, резервируем стандартное название “Таблица”. Включение имени таблицы в качестве значения поля “Таблица” позволяет рассматривать имя таблицы наравне с другими полями. Этот подход упрощает формат запросов на поиск информации. В этом случае можно обращаться с именем таблицы как с обычным полем и включать его значение в поисковый запрос. Согласно свойствам словарного представления для каждой таблицы ее имя будет храниться в единственном числе. Поэтому добавление имени таблицы в каждое поле не приводит к сильной избыточности при хранении информации. Пример текстового файла, удовлетворяющего перечисленным требованиям. P001 P002 P003 P004 NN Таблица Код вида Вид обучения обучения 1 Кодировка видов обучения А Итоговая аттестация, выпускные экзамены 2 Кодировка видов обучения Г Гос. экзамены и защита 3 Кодировка видов обучения Д Выпускная работа. Диссертация 4 Кодировка видов обучения К Каникулы 5 Кодировка видов обучения П Другие практики, НИР 6 Кодировка видов обучения Т Теоретическое обучение 7 Кодировка видов обучения У Учебная практика 8 Кодировка видов обучения Э Экзаменационная сессия Текстовый файл, подготовленный в таком виде, содержит информацию: • кодировку атрибутов и названия атрибутов. Данная информация должна быть загружена в справочник БД; • данные (значения атрибутов) для загрузки в базу данных. Эти две задачи (загрузку в справочник и загрузку в базу данных) можно рассматривать независимо. Остановимся на решении второй задачи — загрузка данных в базу данных. Для загрузки записей в базу данных может быть использована функция прямого управления базой данных. Функция прямого управления базой данных имеет вид int DWPROC(SLV *slkd,SLV *slin,SLV *slout,SLV *slerr, void (*drawProgress)(int a)) где
• slkd — словарь действий; • slin — словарь условий; • slout — словарь результата; • slerr — словарь ошибок; • drawProgress — функция для отображения процента выполнения. При успешном выполнении функции код возврата = 0. Пример обращения к функции: SLV s0,s1,s2,s3; j=DWPROC(&s0,&s1,&s2,&s3,drawProgress); Функция drawProgress должна быть описана в вызывающей программе. Если объемы данных невелики и отображение процента выполнения в вызывающей программе не предусмотрено, то функцию прогресса можно определить в виде: void drawProgress(int prc) {; } Одним из вариантов загрузки записей в базу данных является использование словаря slkd. При этом остальные словари должны быть пустыми. Имеется несколько форматов подготовки данных для помещения в словарь slkd. Основным форматом для загрузки новых записей является I.nnnnnn.kkk.PNNN= <значение> где • “I.” команда вставки; • nnnnnn — число, выровненное до заданного размера добавлением нулей в начало, для каждой записи должно быть свое число; • kkk — номер позиции, определяет возможность ввода информации в постреляционную базу данных; • PNNN — кодировка атрибута. Числа nnnnnn для каждой записи должны быть уникальными, конкретное значение числа nnnnnn безразлично. Например, для загрузки в БД двух записей можно включить в словарь slkd следующие строки: 001.001661.046.P013=Хорошев Артём Алексеевич 001.001661.047.P011=19 001.001661.048.P013=Шелопугин Виталий Дмитриевич 001.001661.049.P011=20 001.001661.050.P013=Щербакова Анастасия Александровна 001.001661.051.P011=21 001.001661.052.P013=Яркиев Данил Маратович 001.000568.002.P002=2019 / 2020 001.000568.003.P003=Космический 001.000568.004.P004=К1 001.000568.005.P005=Уткин Г.С. 001.000568.006.P006=Программирование и основы алгоритмизации 001.000568.007.P007=К1-21Б что равносильно включению следующих строк: 001.000001.046.P013=Хорошев Артём Алексеевич 001.000001.047.P011=19 001.000001.048.P013=Шелопугин Виталий Дмитриевич 001.000001.049.P011=20 001.000001.050.P013=Щербакова Анастасия Александровна 001.000001.051.P011=21 001.000001.052.P013=Яркиев Данил Маратович 001.000002.002.P002=2019 / 2020 001.000002.003.P003=Космический 001.000002.004.P004=К1 001.000002.005.P005=Уткин Г.С. 001.000002.006.P006=Программирование и основы алгоритмизации 001.000002.007.P007=К1-21Б или строк с другими значениями позиционирования: 001.000001.086.P013=Хорошев Артём Алексеевич 001.000001.095.P011=19 001.000001.062.P013=Шелопугин Виталий Дмитриевич 001.000001.035.P011=20 001.000001.066.P013=Щербакова Анастасия Александровна 001.000001.087.P011=21 001.000001.059.P013=Яркиев Данил Маратович 001.000002.054.P002=2019 / 2020 001.000002.085.P003=Космический 001.000002.026.P004=К1 001.000002.005.P005=Уткин Г.С. 001.000002.044.P006=Программирование и основы алгоритмизации 001.000002.031.P007=К1-21Б Во всех случаях произойдет загрузка информации в первый блок и система сама присвоит номера записей. Если загрузку данных необходимо выполнить в другой блок, то в словарь slkd добавляется команда I.P000=bbb — требование загрузить в заданный блок, где bbb — номер блока. Номер блока указывается выровненным трехзначным числом в диапазоне от 1 до 900. Можно задать одновременную загрузку в один или несколько блоков, используя следующий формат представления значения атрибута: I.bbb.nnnnnn.kkk.PNN где bbb – номер блока.
|
||||||
Последнее изменение этой страницы: 2021-07-19; просмотров: 43; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.34.146 (0.013 с.) |