Практическое занятие № 23-24
Тема: Правила импортирования данных в SQL Server Management Studio
Цель работы: получить практический опыт в импортировании данных в БД.
Приобретаемые умения и навыки: умение производить импорт в базу данных.
Норма времени: 2 часа.
Оборудование: Компьютер с установленным программным обеспечением и подключенный к Internet.
Методические указания по выполнению практической работы
Восстановление базы данных
Для восстановления базы данных у нас должен быть специализированный файл с кодом нашей базы
Данный файл нам надо открыть в приложении MSServer, если файл имеет подобную иконку, то вероятнее всего для данного расширения программа MSServer стоит по умолчанию, поэтому мы можем открыть его просто дважды кликнув. Если MSServer не стоит по умолчанию, то при попытке открыть Windows сама предложит программу для открытия
Открыв, мы можем наблюдать за множеством строчек кода
Что бы таблицы восстановились в базе, которую мы только что создали нам необходимо выбрать её в выпадающем меню на панели инструментов
После чего на панели инструментов нажать кнопку «Execute» - «Выполнить» или клавишу F5
Выполнив команду, обновляем папку Таблицы и видим, что все наши таблички успешно восстановились
Импорт данных
У нас есть три файла для импорта, обычно слово до первого нижнего подчеркивания это название таблицы, в которую нам нужно импортировать данные
Найдем эти таблицы в базе данных
И так, таблицы которые выделены синим нам необходимо заполнить
Что бы понять какую таблицу нам нужно заполнять первой достаточно посмотреть на линии с ключами, если от таблицы нет не одной линии, где ключ находится не у этой таблицы, а на противоположном конце, то эта таблица независима от других.
Начнем с таблицы Service по сколько все линии с ключами, направленные к ней, значит мы можем заполнить её без данных в других таблицах.
Открываем Excel и создаем пустую книгу.
Сверху переходим на вкладку «Data» - «Данные», раскрываем меню «Get Data» - «Получить данные», выбираем «From File» - «Из Файла» и поскольку файл service текстовый, то выбираем «From Text/CSV» - «Из Текста/CSV»
Откроется окно, где нам необходимо указать какой файл мы будем импортировать
После того как мы нажмем кнопку Импорта откроется окно по редактирования данных что бы импортировать их верно.
Видим, что данные в полях отображаются не корректно, чтобы это исправить сменим кодировку на UTF-8
Данные стали отображаться корректно, нажимаем кнопку загрузить.
После погрузки данные отобразятся на листе в Excel
Приведем данные к такому же ввиду как в базе данных
Первое что нам нужно сделать это добавить колонку слева (в базе это колонка служит для идентификатора), называть её не обязательно, но для удобства приветствуется
Сверимся с базой,
Первая колонка – Идентификатор, добавили
Вторая колонка – Название (Title), уже имеется
Третья колонка – Стоимость (Cost), находится правее чем необходимо, поэтому вырежем её и вставим на нужное место
Четвертая колонка – Длительность (DurationInSecond), есть
Пятая колонка – Описание (Description), необходимо добавить
Шестая колонка – Скидка (Discount), есть
Седьмая колонка – Путь к главной картинке (MainImagePath), поскольку данная колонка не обязательна и она является последней, то её можно не добавлять (Не обязательные поля которые не находятся в конце необходимо добавлять, просто оставьте их пустыми, иначе данные импортируются в базу не корректно)
Приведем данные к подобающему типу данных
По сколько Идентификатор заполняется автоматически его мы не трогаем.
С наименование всё в порядке
Стоимость, здесь имеются недопустимые символы такие как «₽», «руб.» и «рублей», всё это нам необходимо убрать, для этого мы можем воспользоваться заменной текста во вкладке
Проделываем это со всеми символами
Некоторые строчки не переместились вправо, это значит что ещё остался символ – пробел, его так же можно убрать через замену, но если бы это был текст, то нам было бы необходимо воспользоваться функцией.
Длительность
В базе название колонки DurationInSecond, что дает нам понять что время тут должно быть в секундах, поэтому переведем данные в секунды, для начала нам нужно разделить числовое значение с текстовым, для этого воспользуемся функцией на вкладке Data, но прежде чем использовать, нужно создать две колонки, что бы текст после разделения не перезаписал уже имеющиеся данные других колонок
В первом окне выбираем «Delimited» и переходим дальше
Во втором же окне нам необходимо выбрать разделитель, в нашем случае это пробел
Предварительно мы можем увидеть, что наш текст разбился на три колонки по сколько перед текстом был пробел, он останется в колонке, где сейчас эти данные, нажимаем Finish
Наша таблица имеет такой вид, теперь нам нужно перевести минуты и часы в секунды, для этого напишем условие
Результат отобразился, теперь продлим это на оставшиеся строчки
Колонки с числом длительности и единицей, скроем
Описание, поле является не обязательным, так что оставим его пустым.
Действующая скидка, тип поля в базе float, значит надо убрать все лишние пробелы и символы, так же сделаем это через замену. Так же есть некоторые строчки, где просто написано нет, их заменяем на пустоту.
Мы привели таблицу к нужному виду.
Скопируем все данные(заголовок копировать не нужно), и вставим их в таблицу
После вставки наши данные сразу же отобразились
Импорт таблицы Client
Данная таблица связанна внешним ключом с другой таблицей, от чего является зависимой от другой таблицы «Gender» - «Пол», значения этой таблицы нам понятны, и мы можем прописать их вручную
Теперь необходимо эти данные скопировать и добавить на отдельный лист в Excel
После этого, так же как мы делали с предыдущей таблицей, импортируем таблицу Client
Видим что в этом файле разделителем является точка с запятой
Выбираем её разделителем и продолжаем импортировать.
Данные импортировались, но также их нужно отредактировать перед импортом в саму базу данных
Первое что бросается в глаза это поля Имя и Отчество, а именно отсутствие в некоторых сроках этих данных, дело в том, что где-то они не были разделены и в первой колонке хранятся все данные, разобьем текст первой колонки по столбцам, но перед эти так же создадим две колонки после фамилии, иначе данные в строках Имя и Отчество сотрутся
Теперь что бы объединить эти данные создадим 2 колонки в которые мы их и будем объединять, в этих двух колонка пропишем формулу =первое_поле_с_именем&второе_поле_с_именем
И так же протягиваем формулу до конца
Имена успешно совместились, тоже самое проделываем с отчеством
По сколько в новом поле Имя и в новом поле Отчество некоторые данные отступают (пробел впереди слова), то нам необходимо отредактировать изначальные данные, просто уберем в них пробелы через замену
И скроем колонки со старыми данными
По сколько не в одной колонке данные не зависят от пробелов, то я сразу же уберу пробелы во всех колонках
Колонка «Пол», по сколько она является связанной с другой таблицей, причем по полю «Code» в другой таблице, то в значениях у нас должны быть числа, для этого сначала приведем все слова к одному типу, «мужской» сократим до «м», а «женский» до «ж»
После добавим колонку с сокращением на наш лист куда мы копировали данные с таблицы Gender
Перед колонкой пол добавим новую колонку, в которой напишем формулу что бы выводились числа
Формула LOOKUP, первый параметр формулы, поле, которое мы должны сравнить.
Второй параметр, с чем сравнить (выделяется диапазон значений).
Третий параметр то, что мы должны вывести (выделяется диапазон значений).
У нас подставилось 2, хотя данные «мужской» с кодом 1, дело в том, что если не отсортировать данные с которыми мы будем сравнивать, то подставлять будет не корректно, поэтому отсортируем данные с полом по любому текстовому полю
Теперь если вернуться, то стоит цифра 1 что, верно, для поля справа
Продлим формулу до низу
Скроем колонку с текстовым обозначением пола.
Теперь расставим колонки в нужном порядке и добавим не достающие
Теперь заносим данные в базу
Всё успешно занеслось!
Добавляем новый лист и импортируем последнюю таблицу с данными
Вставка данных в зависимую таблицу
Откроем файл
Создадим в excel две новых страницы client и service (таблицы из нашей БД) и копируем данные в таблицы
Так же поступим с другой таблицей
Подготовим таблицу serviceclient_a_import под проект нашей БД
Для того что бы заполнить значениями столбец ClientID прейдем на страницу Client и отсортируем столбец с фамилией
Теперь перейдём к столбцу ClientID и пропишем функцию
Нажмём Ок и протянем значения столбца ClientID
Так же поступим с со столбцом ServiceID ( ВАЖНО ЧТО БЫ СТОЛБЕЦ БЫЛ ОТСАРТИРОВАН!!)
Подготовим таблицу excel к импорту в БД и импортируем
Данные успешно импортировались.
Контрольные вопросы:
Что такое SQL Server Management Studio (SSMS)?
Какие ошибки могут возникнуть при импорте данных и как их избежать?