Как создать файл sql
Обновлено: 21.11.2024
Рекомендуется использовать сценарий SQL для создания схемы. Это упрощает корректировку определений схемы и быстрое воссоздание схемы при необходимости.
Скрипт для создания схемы представляет собой текстовый файл, содержащий все команды SQL для создания схемы. Используйте теги комментариев /* и */ для документирования сценария.
Заключите все имена объектов (схема, таблица и столбец) в двойные кавычки, а все значения столбца — в одинарные кавычки. Используйте двойные кавычки для имен объектов, которые также являются зарезервированными словами в SQL или содержат специальные символы. Специальные символы — это все символы, кроме букв, цифр и символа подчеркивания (_). Если вы получаете сообщение об ошибке "Ошибка синтаксического анализа SQL. Проверьте ввод SQL.", проверьте свой скрипт на наличие имен объектов без двойных кавычек.
Если вы работаете со схемой, отличной от схемы по умолчанию, имена объектов должны быть полными: ""."" .
Если ваша схема включает ограничения для определения отношений между таблицами, такие как определения первичного и внешнего ключа или синтаксис RELATIONSHIP, мы рекомендуем сначала создать все таблицы, а затем добавить отношения между таблицами с помощью ДОБАВИТЬ ОГРАНИЧЕНИЕ. синтаксис. Такой подход упрощает устранение неполадок в скрипте и внесение последующих изменений.
Откройте новый файл в текстовом редакторе.
Введите команду для создания базы данных, если она еще не существует:
Введите команду, чтобы указать базу данных для использования:
Введите команду для создания схемы, если вы не хотите использовать схему по умолчанию:
Введите каждое из операторов CREATE TABLE с определениями столбцов, ограничениями первичного ключа и спецификацией сегментирования (если есть).
В конце скрипта при необходимости введите операторы ALTER TABLE, чтобы добавить внешние ключи для использования при объединении таблиц.
Запустите скрипт одним из следующих способов:
Войдите в оболочку, скопируйте свой скрипт в свой экземпляр ThoughtSpot с помощью scp и передайте его в TQL:
ThoughtSpot — это корпоративная платформа аналитики на основе поиска и искусственного интеллекта. Любой может использовать поиск, чтобы анализировать данные компании за считанные секунды и автоматически получать статистику, когда она вам нужна.
Я с трудом могу себе представить сложные изменения в базе данных без использования сценариев SQL. Мы фактически использовали их в этой серии до сих пор, но мы не указали, что они на самом деле собой представляют. Сегодня мы выступим против этой несправедливости. Устройтесь поудобнее, расслабьтесь и приготовьтесь узнать что-то новое и полезное.
Желаемые изменения
Прежде чем делать что-то еще, мы опишем, что у нас есть и чего мы хотим достичь. Это относится не только к базам данных, но и почти к любому процессу — вы должны дать себе время подумать о проблеме, прежде чем начинать кодировать/копать.
На рисунке ниже вы можете увидеть нашу текущую модель данных. Таблицы страны и города служат хранилищем, где мы будем хранить данные, относящиеся к странам в городах. Если наша база данных не служит только этой цели, эта модель не слишком «умна». Думаю, вы хотите иметь в своей базе данных нечто большее, чем просто список стран и городов:
Эта модель до сих пор выполняла свою задачу, но теперь мы готовы перейти на следующий уровень, и нам нужно что-то более сложное. Хотя нам понадобятся эти две таблицы для хранения стран и городов, мы добавим еще несколько таблиц.
- Совет. Некоторые таблицы часто повторяются в самых разных моделях данных. Это те, которые хранят данные, которые часто используются и являются частью практически любого бизнес-процесса. Некоторыми примерами таких таблиц являются страна, город, сотрудник/пользователь/учетная запись, клиент/клиент, задача, контакт.
- employee — содержит список всех сотрудников нашей компании.
- клиент — содержит список всех клиентов, с которыми мы работали
- call_outcome — список всех возможных способов завершения любого звонка. Такие таблицы обычно называют словарями (каталогами). Они специфичны, потому что значения, хранящиеся здесь, почти никогда не меняются, а бизнес-логика часто напрямую связана с этими значениями. Например, результатом звонка может быть «Звонок выполнен успешно — продажи» или «Клиент отклонил наше предложение».
- вызов — содержит сведения о звонках сотрудников клиентам. Обратите внимание, что в этой таблице сотрудники, клиенты и результаты звонков связаны
Эти 4 таблицы представляют собой гораздо больше, чем просто место для хранения данных, как мы это делали с округами и городами.Хотя все в базах данных тесно связано с нашим бизнесом, эти 4 новые таблицы гораздо более специфичны, чем те 2, которые у нас уже были. По сути, они определяют цель всей модели данных.
Теперь мы знаем, где мы находимся и где мы хотим быть. Единственное, чего нам не хватает, так это того, как туда добраться. Чтобы добраться туда, мы будем использовать скрипт SQL. Но прежде чем мы это сделаем, давайте посмотрим, что такое SQL-скрипт на самом деле.
SQL-скрипт
В программировании скрипты — это последовательность команд (последовательность инструкций) или программа, которая будет выполняться в другой программе, а не процессором компьютера (скомпилированные программы выполняются процессором компьютера —> обратите внимание, что скрипт не скомпилировано).
То же самое относится и к сценариям SQL. Единственное, что специфично, это то, что команды в таких сценариях являются SQL-командами. И эти команды могут быть любой комбинацией команд DDL (язык определения данных) или DML (язык манипулирования данными). Таким образом, вы можете изменить структуру базы данных (CREATE, ALTER, DROP объекты) и/или изменить данные (выполнить команды INSERT/UPDATE/DELETE).
Желательно, чтобы вы использовали сценарии, особенно когда вы развертываете новую версию и хотите сохранить текущие данные такими, какими они были до этого изменения.
Резервное копирование и восстановление
Использование скриптов обычно связано со значительными изменениями в базе данных. Я могу быть параноиком по этому поводу, но я предпочитаю делать резервную копию базы данных перед этими изменениями.
Совет. Если вы ожидаете серьезных изменений в своих базах данных, либо в структуре, либо в данных, создание резервной копии всегда является хорошей идеей. Вы можете сделать резервную копию всей базы данных или только 1 таблицы. Это полностью зависит от вас и изменений, которые вы вносите.
Старое, но хорошее: "Есть два типа людей: 1. Люди, которые делают резервные копии, и 2. Люди, которые начнут делать резервные копии".
В SQL Server можно легко создать резервную копию всей базы данных. Сначала щелкните правой кнопкой мыши базу данных, которую вы хотите создать резервную копию, перейдите в «Задачи» и выберите параметр «Резервное копирование»:
После выбора варианта резервного копирования появится всплывающее окно, как на картинке ниже:
Нажмите «ОК», и ваша резервная копия будет создана. Теперь мы можем создать копию нашей базы данных. Мы сделаем это, восстановив из резервной копии. Для этого выполните действия, показанные на картинке ниже:
Вам нужно будет ввести имя восстановленной базы данных (our_first_database_old) и нажать OK:
Результатом этих действий должно быть то, что теперь у нас есть 2 идентичные базы данных — our_first_database и our_first_database_old. Мы будем использовать первый как тот, где мы запустим наш скрипт SQL. Если бы мы что-то напортачили, мы всегда могли бы легко отменить изменения, используя нашу резервную копию.
Сценарий SQL — пример
Теперь мы готовы взглянуть на наш скрипт. Мы хотим сделать две разные вещи:
- Создавать новые объекты базы данных (таблицы и отношения) — команды DDL и
- Заполнение этих таблиц данными – команды DML
Конечно, сначала мы будем запускать команды DDL, а затем команды DML. Попытка вставить данные в несуществующую таблицу приведет к ошибкам. Итак, давайте теперь посмотрим на наш скрипт:
ВСТАВИТЬ В customer ( customer_name , city_id , customer_address , next_call_date , ts_inserted ) VALUES ( 'Ювелирный магазин' , 4 , 'Long Street 120' , '2020/01/21' , 2020/1/9 14:1: 20' );
ВСТАВИТЬ В customer ( customer_name , city_id , customer_address , next_call_date , ts_inserted ) VALUES ( 'Пекарня' , 1 , 'Курфюрстендамм 25' , '2020/2/21' , '2020/1/9 17:52:15' ) ;
ВСТАВИТЬ В Customer (customer_name, city_id, customer_address, next_call_date, ts_inserted) VALUES («Кафе», 1, «Tauentzienstraße 44», «2020/01/21», «2020/1/10 8:2:49» ) ;
ВСТАВИТЬ В Customer ( customer_name , city_id , customer_address , next_call_date , ts_inserted ) VALUES ( 'Ресторан' , 3 , 'Ulica lipa 15' , '2020/01/21' , 2020/1/10 9:20:21 ' );
ВСТАВИТЬ В вызов ( employee_id , customer_id , start_time , end_time , call_outcome_id ) VALUES ( 1 , 4 , '2020/1/11 9:0:15' , '2020/1/11 9:12:22' , 2 ) ;
ВСТАВИТЬ В вызов ( employee_id , customer_id , start_time , end_time , call_outcome_id ) VALUES ( 1 , 2 , '2020/1/11 9:14:50' , '2020/1/11 9:20:1' , 2 ) ;
ВСТАВИТЬ В вызов ( employee_id , customer_id , start_time , end_time , call_outcome_id ) VALUES ( 2 , 3 , '2020/1/11 9:2:20' , '2020/1/11 9:18:5' , 3 ) ;
ВСТАВИТЬ В вызов ( employee_id , customer_id , start_time , end_time , call_outcome_id ) VALUES ( 1 , 1 , '2020/1/11 9:24:15' , '2020/1/11 9:25:5' , 3 ) ;
ВСТАВИТЬ В вызов ( employee_id , customer_id , start_time , end_time , call_outcome_id ) VALUES ( 1 , 3 , '2020/1/11 9:26:23' , '2020/1/11 9:33:45' , 2 ) ;
ВСТАВИТЬ В вызов ( employee_id , customer_id , start_time , end_time , call_outcome_id ) VALUES ( 1 , 2 , '2020/1/11 9:40:31' , '2020/1/11 9:42:32' , 2 ) ;
ВСТАВИТЬ В вызов ( employee_id , customer_id , start_time , end_time , call_outcome_id ) VALUES ( 2 , 4 , '2020/1/11 9:41:17' , '2020/1/11 9:45:21' , 2 ) ;
ВСТАВИТЬ В вызов ( employee_id , customer_id , start_time , end_time , call_outcome_id ) VALUES ( 1 , 1 , '2020/1/11 9:42:32' , '2020/1/11 9:46:53' , 3 ) ;
ВСТАВИТЬ В вызов ( employee_id , customer_id , start_time , end_time , call_outcome_id ) VALUES ( 2 , 1 , '2020/1/11 9:46:0' , '2020/1/11 9:48:2' , 2 ) ;
ВСТАВИТЬ В вызов ( employee_id , customer_id , start_time , end_time , call_outcome_id ) VALUES ( 2 , 2 , '2020/1/11 9:50:12' , '2020/1/11 9:55:35' , 2 ) ;
Наш сценарий представляет собой серию команд CREATE TABLE (создание 4 новых таблиц), команд ALTER TABLE (добавление внешних ключей к этим таблицам) и команд INSERT INTO (заполнение таблиц данными). Для команд INSERT я еще раз использовал Excel для создания команд из набора значений:
Все должно пройти гладко, и вы должны увидеть это в разделе "Сообщения" (много (1 строка затронутых сообщений)), а также сообщение "Запрос выполнен успешно" (и все должно быть зеленым). Если что-то будет не так, вы это заметите 🙂
С другой стороны, в списке баз данных, когда вы разворачиваете таблицы our_first_database, вы должны увидеть все новые таблицы. Теперь мы уверены, что у нас есть новые объекты (таблицы) в нашей базе данных. Но как насчет данных? Мы проверим содержимое этих таблиц с помощью простых операторов SELECT.
Сценарий SQL — комментарий
Как вы видели, в нашем скрипте SQL мы объединили команды DDL и DML. Обычно это происходит, когда вы развертываете новую версию базы данных в системе, которая в настоящее время работает. Вы не можете просто удалить все и создать новые объекты (таблицы и отношения), потому что вы потеряете существующие данные, а это никому не нужно (потеря данных, вероятно, худшее, что вы можете сделать с базами данных). Поэтому вам потребуется создать скрипт, который выполняет изменения и вставляет новые данные (обычно данные для новых словарей).
В нашем скрипте мы только создали новые объекты и вставили данные. Все остальные команды также разрешены. Например, вы можете изменить существующую таблицу (добавив или удалив столбцы, добавив свойства) или даже удалить таблицу, если она больше не нужна. То же самое относится к данным. Вы можете выполнять не только INSERT, но также UPDATE и DELETE. Если вам нужно это сделать, вы внесете изменения в существующую логику, поэтому перепроверьте все (даже то, что вы уже перепроверили).
Заключение
Можно сделать вывод, что мы достигли того, что планировали изначально. Это здорово, потому что теперь у нас есть гораздо более сложная (но все же очень простая) модель, которую мы можем использовать для написания более сложных запросов, чем до сих пор. Я не буду вдаваться в природу отношений в этой статье. Об этом будет рассказано в следующей статье, так что следите за обновлениями.
Модель ApexSQL предоставляет возможность создать сценарий SQL, который можно легко использовать в других инструментах, например, в SQL Server Management Studio (SSMS), или можно сохранить локально в качестве резервной копии или поделиться с другими участниками в команда. Этот инструмент моделирования базы данных SQL также позволяет создать сценарий SQL для одной или нескольких таблиц базы данных.
В этой статье объясняется, как использовать сценарий SQL для создания базы данных.
Сценарий SQL можно создать для вновь созданной таблицы в модели ApexSQL или для таблицы из уже существующей базы данных, которая была загружена ранее.
Подробнее о том, как создать таблицу в модели ApexSQL, см. в статье Как создать или изменить таблицу с помощью инструмента моделирования данных SQL.
Создание сценария SQL
Когда таблицы созданы в модели ApexSQL, первым шагом в процессе создания сценария SQL является нажатие кнопки «Создать сценарий» на вкладке «Действия»:
Это действие откроет окно Создать скрипт, в котором будут перечислены все созданные таблицы.Проверьте таблицы, которые будут частью сценария SQL, и нажмите кнопку ОК:
Откроется окно редактора со скриптом SQL. Здесь можно сохранить сценарий SQL, чтобы отправить его другому члену команды или выполнить в SSMS:
Создание базы данных из сценария SQL
При создании сценария SQL первым оператором будет создание базы данных, которая по умолчанию является базой данных DefaultDb. В окне Редактора имя базы данных можно изменить перед выполнением или сохранением SQL-скрипта:
Чтобы создать базу данных из сгенерированного сценария SQL, нажмите кнопку «Подключиться» в окне редактора. В окне Подключиться к SQL Server выберите нужный SQL Server и тип аутентификации и нажмите кнопку Подключиться:
Примечание: при создании новой базы данных с помощью сценария SQL следует выбрать параметр по умолчанию в поле базы данных.
Чтобы создать новую базу данных из сгенерированного сценария SQL с помощью инструмента моделирования базы данных SQL, нажмите кнопку «Выполнить»:
Если все прошло как надо, появится информационное сообщение, подтверждающее успешное выполнение SQL-скрипта и создание базы данных:
Созданная база данных будет указана на панели обозревателя объектов в SQL Server Management Studio (SSMS):
Часто задаваемые вопросы:
В: Можно ли открыть сохраненный сценарий SQL в любом другом инструменте, кроме модели ApexSQL?
О: Да, сохраненный скрипт SQL можно открыть и просмотреть в любом инструменте, который поддерживает файлы .sql, например Notepad, Notepad++, SSMS, Visual Studio и т. д.
В: Как создать сценарий SQL только для нужных таблиц, а не для всех таблиц, созданных в модели ApexSQL?
A: Чтобы создать сценарий SQL только для нужных таблиц, в окне Создать сценарий отметьте только их и нажмите кнопку ОК. Таким образом, в сценарий SQL будут интегрированы только проверенные таблицы.
В: Можно ли задать порядок выполнения таблиц в SQL-скрипте?
О: Да, это можно сделать в окне Создать скрипт. Выберите уже проверенную таблицу и нажмите на соответствующие кнопки, чтобы переместить ее вниз или вверх в порядке выполнения:
В: Могу ли я обновить базу данных с помощью функции сценария SQL?
О: Нет, обновление базы данных с помощью скрипта SQL невозможно в инструменте моделирования базы данных SQL
В: Могу ли я выполнить созданный сценарий SQL в SSMS и создать базу данных, когда захочу?
О: Да, сохраненный сценарий SQL можно использовать в SSMS для создания новой базы данных с определенными таблицами:
В окне инструмента "Файлы" (Вид | Окна инструментов | Файлы) щелкните правой кнопкой мыши каталог и выберите "Создать | SQL-файл. Укажите имя файла SQL.
Откройте файл SQL и определите следующую структуру таблицы в нашем файле:
Для вставки оператора CREATE TABLE существует предопределенный шаблон. Нажмите Ctrl+J и выберите вкладку шаблона — определение новой таблицы.
Вот результат:
Введите семейство имен таблиц .
Чтобы переключиться с семейства на столбец, нажмите Tab . Замените col на member_id .
Введите оставшуюся часть определения таблицы.
Шаг 2. Создайте источник данных DDL из файла SQL
Чтобы создать таблицу из файла SQL, перетащите файл SQL с определенной таблицей в проводник базы данных ( View | Tool Windows | Database Explorer ).
Шаг 3. Определите данные для источника данных
Теперь мы собираемся создать файл SQL для добавления данных в таблицу. На шаге 2 файл SQL был определен как источник данных, имена таблицы и ее столбцов, а также информация о соответствующих типах данных теперь доступны в редакторе.
Создайте файл SQL.
Давайте добавим в файл этот простой оператор INSERT:
Добавьте оператор INSERT, выбрав соответствующий предопределенный шаблон: Ctrl+J | ins — вставить строки в таблицу.
Выберите семейство имен таблиц.
Выберите список имен столбцов member_id, имя, отношение .
При указании значений нажмите Ctrl+P ( View | Parameter Info ), чтобы просмотреть информацию о типах значений.
Вы только начали учиться работать с файлами SQL с помощью MySQL?
Возможно, вы немного не понимаете, как импортировать файлы с помощью этого инструмента.
К счастью, импортировать и экспортировать файлы через MySQL на самом деле довольно просто.
Узнайте, как использовать MySQL для импорта файлов SQL, следуя приведенному ниже пошаговому руководству.
Ищете простой сервис для управления резервными копиями MySQL?
→ Попробуйте SimpleBackups бесплатно
Оглавление
Импорт файла SQL с помощью командной строки
- Откройте XAMPP.
- Запустите сервер Apache и базу данных MySQL.
- Создайте базу данных через phpMyAdmin.
- Скопируйте файл SQL по вашему выбору в каталог xampp/mysql/bin/.
- Откройте командную строку.
- Перейдите в xampp/mysql/bin/.
Импорт MySQL из командной строки
Подтвердите свои данные
- Откройте phpMyAdmin или любой клиент MySQL и выберите свою базу данных, чтобы убедиться, что таблицы импортированы правильно.
Импорт файла SQL с помощью mysqldump
- Чтобы импортировать файл .sql с помощью mysqldump, используйте команду mysqlimport со следующими флагами и синтаксисом $ mysqlimport -u magazine_admin -p magazines_production ~/backup/database/magazines.sql
- -u и -p необходимы для аутентификации, за ними следует имя базы данных, в которую вы хотите импортировать.
- Вам потребуется указать путь к файлу дампа SQL, который будет содержать данные импорта: ~/backup/database/magazines.sql
- Вам не нужно будет использовать > или < для импорта, но они понадобятся вам для экспорта в следующем руководстве.
- Это вызовет запрос пароля.
- Ваш файл будет автоматически импортирован.
Примечания:
- После ввода этой команды вам может быть предложено ввести пароль для используемого вами пользователя MySQL.
- Будьте осторожны при использовании существующей базы данных, в которой есть записи, так как эта команда перезапишет вашу существующую базу данных и в конечном итоге приведет к потере ваших записей.
Экспорт файла SQL с помощью mysqldump
- Чтобы экспортировать базу данных MySQL в тестовый файл, начните с команды mysqldump.
- Войдите в MySQL.
- Введите команду mysqldump, используя следующие флаги и параметры: $ mysqldump -u имя_пользователя -p имя_базы_данных > путь_файла_вывода
- Флаг -u указывает имя пользователя MySQL.
- Флаг -p указывает запрос пароля, связанный с указанным выше именем пользователя.
- database_name — это имя базы данных, которую вы хотите экспортировать.
- Символ > — это директива Unix для STDOUT, которая позволяет командам Unix выводить последующие результаты команды вывода в другое место. Обычно это пути к файлам.
- Обязательно введите полный путь и имя файла в путь к выходному файлу, чтобы ваш файл был размещен именно там, где вы хотите.
- После выполнения команды вам будет предложено ввести пароль.После этого будет создан экспортированный файл резервной копии с расширением .sql.
Как автоматизировать резервное копирование MySQL?
Создание резервных копий MySQL и восстановление дампа MySQL (как описано в этой статье) — несложная задача, но наступает момент, когда вы захотите автоматизировать ее таким образом, чтобы ваши данные были защищены на 100 % время.
Если вам нужно управлять несколькими резервными копиями на нескольких серверах и вам нужно решение, которому вы можете доверять и оптимизировать все это, обязательно ознакомьтесь с тем, что мы делаем в SimpleBackups.
SimpleBackups автоматизирует резервное копирование MySQL для безопасной отправки файлов резервных копий за пределы офиса в облако для хранения.
Читайте также: