Select insert into ms sql: SQL INSERT INTO SELECT Statement
Содержание
Импорт CSV тремя простыми способами
Сегодня существуют более простые способы импорта CSV в SQL Server. Вы можете писать меньше кода или использовать графические инструменты. Вы даже можете получить CSV-файл из облачного хранилища на локальный SQL Server. Этот пост будет посвящен тому, как вы можете сделать это тремя простыми способами.
Содержание
- Зачем импортировать CSV в SQL Server
- Как импортировать файл CSV в SQL Server (3 простых способа)
- ОБЪЕМНАЯ ВСТАВКА
- SQL Server Management Studio Инструменты импорта CSV
- Инструменты ETL — облачное решение Skyvia
- Заключение
Зачем импортировать CSV в SQL Server
Я читал о значениях, разделенных запятыми, или CSV, в Википедии. Можете ли вы поверить, что CSV поддерживался еще в 1972 году? По какой причине?
Для обмена данными между 2 и более системами разных платформ и архитектур. Сегодня причина все та же. Представьте, что у вас есть 2 проприетарные системы. Один из них использует проприетарную базу данных NoSQL, такую как у PayPal. А другой использует SQL Server. Это как японец разговаривает с эстонцем. Понять почти невозможно. Каково решение, спросите вы?
Экспорт файла CSV из базы данных NoSQL. Затем импортируйте файл CSV в SQL Server. Вместо того, чтобы изобретать новое программное обеспечение, обменяйтесь зрелым и распространенным форматом файлов. Это будет проще и займет меньше времени.
Вот распространенные сценарии, когда CSV может быть полезен:
- Клиенты платят обслуживающей компании через банк. Затем банк предоставляет платежные записи обслуживающей компании с помощью файла CSV.
- Операционная система, созданная собственными силами, должна быть интегрирована в систему ERP.
- Несколько списков SharePoint необходимо синхронизировать с базой данных SQL Server для анализа данных.
- Биометрическая система должна быть интегрирована в систему управления персоналом для контроля посещаемости.
Хотя это можно сделать с помощью JSON или XML, CSV проще создать из исходного кода. Если требования к данным не являются иерархическими, CSV может подойти. А как насчет целевой системы, использующей SQL Server? Рейтинг Gartner Peer Insights составляет 4,5 из 5 возможных. SQL Server в облаке или Azure SQL также входит в тройку лучших СУБД 2020 года. Таким образом, обучение импорту CSV в SQL Server стоит затраченных усилий. Вы спросите, как это сделать. Ответ подробно описан ниже.
Как импортировать файл CSV в SQL Server (3 простых способа)
Прежде чем мы начнем, нам нужен образец CSV и целевая таблица в SQL Server. Проверьте это на скриншоте ниже.
Это будет использоваться для загрузки в SQL Server с использованием 3 различных способов импорта CSV. Итак, загрузите копию файла Actor.csv отсюда. Вспомните, где вы его сохранили. Он понадобится вам позже в этом уроке.
Между тем, целевая таблица имеет такую же структуру в SQL Server.
В этом руководстве я использую имя сервера MS-SQLSERVER. И имя базы данных CSV-MSSQL-TEST.
Использование BULK INSERT
BULK INSERT — это команда SQL Server для импорта файлов данных в таблицу базы данных. Его можно использовать для загрузки файлов различных форматов, в том числе CSV. Если вам нравится немного программировать, это путь. Вот код массовой вставки CSV в SQL Server:
-- сначала усеките таблицу TRUNCATE TABLE dbo.Actors; ИДТИ -- импортируем файл МАССОВАЯ ВСТАВКА dbo.Actors ИЗ 'C:\Documents\Skyvia\csv-to-mssql\actor.csv' С ( ФОРМАТ='CSV', ПЕРВЫЙ УРОВЕНЬ=2 ) ВПЕРЕД
Первая команда просто удаляет все записи в целевой таблице. Затем команда BULK INSERT включает целевую таблицу и файл CSV. Расположение файла CSV должно соответствовать правилам универсального соглашения об именах (UNC). Вы также должны указать SQL Server, с каким файлом он имеет дело. В этом случае FORMAT=CSV, поскольку файл имеет формат CSV. Наконец, укажите, с какой строки начинаются данные. FIRSTROW = 2, так как первая строка содержит имена столбцов.
Вы можете выполнить команду BULK INSERT из SQL Server Management Studio или любого другого инструмента SQL Server. Другой способ сделать это — в PowerShell.
ЗА И ПРОТИВ ИСПОЛЬЗОВАНИЯ BULK INSERT
Плюсы:
- Если вы знаете синтаксис, ввод текста может быть быстрее, чем при использовании интерфейса GUI;
- Нет необходимости анализировать данные. BULK INSERT сделает это за вас. Если в целевом столбце используется тип данных, слишком маленький для данных, произойдет ошибка;
- Возможно планирование выполнения в агенте SQL Server;
- Также отлично подходит для одноразового импорта.
Минусы:
- Вы не можете указать CSV из облачного хранилища, такого как Google Drive или OneDrive;
- Разрешает только SQL Server в качестве целевой базы данных;
- Требуется технический специалист для кодирования, запуска и мониторинга.
Использование SQL Server Management Studio Import CSV Tools
Если вы не предпочитаете кодирование, другим полезным инструментом является Import Data из SQL Server Management Studio (SSMS). Вот как импортировать CSV в таблицу MSSQL с помощью SSMS.
Шаг 1. В обозревателе объектов разверните папку баз данных
Во-первых, вам нужно перейти в обозреватель объектов и выбрать целевую базу данных. Разверните папку Базы данных. Проверьте это ниже.
Шаг 2. Выберите целевую базу данных
В этом примере целевой базой данных является CSV-MSSQL-TEST. Щелкните правой кнопкой мыши эту базу данных и выберите Tasks . Затем нажмите Импорт данных .
Появится окно мастера импорта и экспорта SQL Server с экраном приветствия. Здесь нажмите Далее .
Шаг 3. Выберите источник плоского файла
Эта часть позволит вам выбрать источник данных. Для этого щелкните раскрывающийся список и выберите Flat File Source . После этого нажмите Далее .
Шаг 4. Укажите файл CSV
Теперь вам нужно указать файл. Нажмите Browse и укажите путь к CSV-файлу, как показано на снимке экрана. Если вы скачали его, укажите место загрузки. Затем в типе файла выберите файлов CSV (*.csv) . А потом — acter.csv . Продолжайте, нажав Открыть .
Шаг 5. Настройка столбцов
SSMS не может определить правильные типы данных для каждого столбца? В наших выборочных данных обнаружение правильных типов и размеров отключено. Итак, нам нужно настроить его самостоятельно.
Совет для профессионалов: Всякий раз, когда вы импортируете данные с одной платформы на другую, лучше всего сопоставлять правильные типы и размеры. Почему? Чтобы не было ошибок и головной боли.
Начнем с нажатия Дополнительно . Затем вы увидите список столбцов. Нажмите на каждый и установите тип и размер.
В зависимости от типов и размеров данных обратитесь к таблице ниже, чтобы узнать, что нужно установить для каждого столбца.
Имя столбца | DataType | OutputColumnWidth |
id | четырехбайтовое целое число со знаком [DT_I4] 90 150 | Н/Д |
фамилия | строка [DT_STR] | 20 |
имя | строка [DT_STR] | 20 |
отчество | строка [DT_STR] | 20 |
суффикс 90 150 | строка [DT_STR] | 3 |
Шаг 6.
Выберите место назначения (SQL Server)
Теперь вам нужно указать SQL Server в качестве цели процесса импорта. Для этого выберите Microsoft OLE DB Provider for SQL Server . Затем выберите имя SQL Server и введите необходимые учетные данные. Выберите Имя базы данных и нажмите Далее .
Шаг 7. Укажите таблицу базы данных и проверьте сопоставления столбцов
После выбора базы данных вам также необходимо указать таблицу. Выберите таблицу Актеры .
Затем выберите Изменить сопоставления , чтобы увидеть, соответствуют ли столбцы из источника целевому.
Когда появится окно «Сопоставление столбцов», проверьте, совпадают ли столбцы из источника и цели. Вы можете выбрать удаление строк в целевой таблице или добавить строки. В нашем случае мы хотим начать очистку. Если вы пытались импортировать с помощью BULK INSERT ранее, в целевой таблице уже есть данные. Так и будет ошибка. Чтобы избежать этого, выберите Удалить строки в целевой таблице . Затем нажмите OK .
Наконец, чтобы завершить настройку целевой таблицы, нажмите Далее .
Шаг 8. При необходимости сохраните в пакете служб SSIS или запустите немедленно
Вы можете сохранить всю конфигурацию импорта в пакет служб SSIS. Если вы выберете это, вы можете запланировать запуск пакета через равные промежутки времени. В нашем случае мы просто запустим его немедленно. Для лучшего понимания посмотрите на следующий скриншот.
Затем выберите Далее , чтобы просмотреть сводку выбранных вами настроек. Или нажмите Готово , чтобы запустить процесс импорта. Вы увидите ход выполнения в следующем окне, если нажмете Готово .
Вот и все для импорта CSV в SQL Server с помощью Import Data в SSMS. Вы также можете выбрать Import Flat File , но он всегда будет выгружаться в новую таблицу. И вы не можете сохранить его в пакет SSIS.
ЗА И ПРОТИВ ИСПОЛЬЗОВАНИЯ ИНСТРУМЕНТОВ ИМПОРТА SQL SERVER MANAGEMENT STUDIO
Плюсы:
- Кодирование не требуется;
- Если сопоставления столбцов совпадают с исходным и целевым, это просто работает;
- Разрешает множество источников данных и мест назначения, а не только SQL Server;
- Сохранение в каталоге SSIS и планирование возможно, но ограничено тем, что было определено;
- Отлично подходит для одноразового импорта.
Минусы:
- Если у вас нет спецификаций типов и размеров столбцов в CSV-файле, сопоставление столбцов будет громоздким;
- Невозможно получить CSV-файл с Google Диска, OneDrive или аналогичного облачного хранилища.
Использование инструментов ETL — облачное решение Skyvia
Наконец, мы будем использовать облачный инструмент ETL для импорта CSV-файла в SQL Server. Один из возможных способов импорта CSV в SQL Server — из облачного хранилища, такого как Google Диск. В этом разделе вы увидите, как использовать Skyvia для импорта CSV-файла с Google Диска на SQL Server на локальном ПК. Прежде чем вы сможете использовать его, вам нужна учетная запись в Skyvia и Google. Оба бесплатны для регистрации.
Элементы успешного импорта с использованием Skyvia следующие:
- Агент — вам нужен агент, чтобы разрешить Skyvia подключаться к удаленному серверу SQL.
- Соединения — вам нужно определить 2 соединения: одно для Google Диска и другое для удаленного SQL Server.
- Пакет — Skyvia использует пакеты для определения задач для процесса импорта (например, SSIS).
Для начала вам необходимо авторизоваться в Skyvia. Вы будете перенаправлены в рабочее пространство по умолчанию. Затем отсюда вы можете создать все 3 вещи выше. Вот как.
Шаг 1. Создайте агент
Чтобы создать агент или туннель к удаленному серверу SQL, нажмите NEW . Затем выберите Agent .
Когда вы окажетесь на следующей странице, назовите своего агента Skyvia-MyPC . Затем загрузите и установите агент Skyvia. Пожалуйста, обратите внимание на то, где вы устанавливаете агент. Он понадобится вам при загрузке ключа агента. Наконец, загрузите файл ключа агента и сохраните его там, где вы устанавливаете агент Skyvia.
Теперь настройка вашего агента завершена. Но вам нужно протестировать его. Итак, запускаем установленное приложение агента Skyvia. Вот скриншот установленных файлов Skyvia Agent и Key.
Вот как это выглядит после запуска агента.
После этого вы можете проверить статус на Skyvia. Вот скриншот хорошего соединения. Это означает, что теперь можно подключиться к вашему SQL Server из Skyvia.
Шаг 2. Создайте два подключения для источника и назначения
Сначала давайте создадим подключение к Google Диску, где находится CSV. Для этого нажмите NEW и нажмите Connection .
На следующей странице нужно выбрать разъем. Нажмите Google Диск .
Затем назовите подключение MyGDrive и войдите в свою учетную запись Google. Нажмите Создать подключение , чтобы создать подключение. Вот завершенный скриншот подключения к Google Диску.
Во-вторых, давайте создадим соединение с SQL Server.
Нажмите NEW еще раз и выберите Соединение . Обратитесь к скриншоту выше. Затем нажмите SQL Server . Назовите свое подключение CSV-MSSQL-TEST . После этого нажмите Агент и выберите созданный ранее агент Skyvia-MyPC . Затем введите имя сервера, учетные данные и имя базы данных. Вот скриншот завершенного подключения к SQL Server.
Шаг 3. Создайте пакет Skyvia для импорта файла CSV в SQL Server
Мы почти закончили. Заключительная часть — создание пакета Skyvia. Итак, начните с нажатия NEW , а затем Import . Это создаст пакет импорта.
В открывшемся редакторе пакетов назовите свой пакет CSV-SQL-Test и укажите источник и цель. Наш источник — MyGDrive подключение к Google Диску. И целью является CSV-MSSQL-TEST , подключение к SQL Server.
На что еще обратить внимание:
- Установите флажок Использовать новую среду выполнения . В противном случае подключение к SQL Server не будет отображаться в раскрывающемся списке целей;
- Выберите CSV из службы хранения . В противном случае подключение к Google Диску не будет выбрано;
- Установите флажок Сохранить заказ задачи . Это заставит задачи выполняться последовательно.
Шаг 4. Создание задач в пакете импорта
Пришло время создать задачи. Во-первых, любая существующая запись в таблице «Актеры» должна быть удалена. В разделе Задачи нажмите Добавить новый . Появится новое окно. Затем выберите файл act.csv на Google Диске. Затем сделайте Text Qualifier пустым, а Кодовая страница Западноевропейская Windows (1252) . Наконец, установите для столбца id значение DT_I4 (целое число).
Нажмите Следующий шаг , чтобы продолжить. На второй странице в разделе Операция нажмите Удалить . Это приведет к удалению записей в цели. Нажмите Следующий шаг еще раз, чтобы перейти к настройкам сопоставления. Вы увидите сопоставление между столбцом идентификатора источника и цели. Нажмите Сохранить .
Наконец, первая задача выполнена.
Вторая и последняя задача — вставить строки файла CSV в SQL Server. Шаги почти такие же, за исключением того, что вам нужно определить все типы и размеры столбцов на основе таблицы 1 ранее. Затем нажмите Следующий шаг и выберите операцию Вставить вместо Удалить . Наконец, Сохраните задачу.
Ниже вы можете увидеть скриншот готового пакета. Нажмите Сохранить , чтобы сохранить пакет.
Шаг 5. Запустите пакет
Чтобы запустить пакет, нажмите кнопку Запустить в правом верхнем углу страницы. Затем нажмите Отслеживать , чтобы увидеть ход выполнения. См. пример скриншота ниже.
ПЛЮСЫ И ПРОТИВ ИСПОЛЬЗОВАНИЯ SKYVIA
Плюсы:
- Множество источников и направлений данных, включая облачные хранилища;
- Опытные специалисты по ETL легко освоятся;
- Запланировать автоматическое выполнение пакетов;
- Гибкое ценообразование в зависимости от текущих потребностей и использования;
- Нет необходимости устанавливать средства разработки (за исключением случаев, когда требуется агент).
- получил рейтинг 4,8 в рейтинге G2 Best ETL Tools и 4,9 в рейтинге Gartner Peer Insights.