Вставка данных из одной таблицы в другую в MS Access
Быстрый ответ
Для переноса записей из одной таблицы в другую, при соблюдении условия идентичности столбцов, используйте команду INSERT INTO SELECT. Это практичный инструмент SQL.
-- Avada Kedavra! Заклинание для переноса данных.
INSERT INTO DeathEater_records (FirstName, LastName)
SELECT FirstName, LastName
FROM Hogwarts_students
WHERE BloodStatus = 'Pure-Blood';
В качестве целевого объекта выбирается DeathEater_records
, источником данных служит Hogwarts_students
, определяются названия столбцов и используется условие WHERE
для выделения необходимых данных.
Следует обеспечить совпадение имен столбцов и типов данных, как LongIntColumn1
и CurrencyColumn2
, во избежание ошибок. Тестирование запросов на случайных данных способно подтвердить их корректность.
Развернутое руководство по INSERT INTO SELECT
Агрегация данных
Если требуется сагрегировать данные при переносе, можно использовать группировку и функции:
-- Доверяем Гринготтсу.
INSERT INTO MoneyManagement (AverageGalleons)
SELECT AVG(Galleons)
FROM GringottsVaults
GROUP BY VaultNumber;
Здесь AVG()
и GROUP BY
помогают рассчитывать среднее значение галлеонов для каждого хранилища перед добавлением данных в таблицу MoneyManagement
.
Трансформация данных в процессе переноса
Данные могут быть трансформированы в ходе выполнения операции SELECT, используя псевдонимы и функции в выражении SELECT:
-- Привет от профессора Макгонагалл.
INSERT INTO Minerva_FanClub (MemberName, EnrolmentDate)
SELECT StudentName, TO_CHAR(JoiningDate, 'YYYY-MM-DD')
FROM Hogwarts_database;
Функция TO_CHAR()
адекватно преобразует дату для таблицы Minerva_FanClub
.
Визуализация
Этот процесс похож на волшебное превращение спички (🪵) в иголку (🪡):
Классная комната (🏫): [Деревянная спичка 🪵]
Заклинание (🪄): Превращает 🪵 в 🪡
Блокнот мадам Пинс (📒): Срочно необходима иголка 🪡 для реставрации книг 📚
Произносим заклинание INSERT INTO:
INSERT INTO MadamPince_notebook (FixingTools)
SELECT Tools FROM Classroom;
И вот что получается:
До произнесения заклинания: 🏫🪵 🪄 📒
После произнесения заклинания: 🏫 🪄 📒🪡 (Теперь можно производить реставрацию книг! 📚)
Распространенные ошибки и способы их устранения
Несовпадение типов данных
Необходимо следить за совпадением типов данных в исходной и приемной таблицах. В противном случае результат может быть неожиданным.
Учитывание ограничений
Ограничения в целевой таблице следует учитывать, поскольку при нарушении целостности данных могут возникнуть ошибки.
Обработка проблем с NULL
Проверьте обработку NULL-значений в исходных данных и готовность приемной таблицы принимать такие значения. При необходимости используйте функцию COALESCE
для замещения NULL:
-- NULL? Благодарю, но нет!
INSERT INTO OrderOfPhoenix (wizard, patronus)
SELECT wizard, COALESCE(patronus, 'Stag')
FROM Dumbledore_Army;
Полезные материалы
- SQL INSERT INTO SELECT Statement – Обстоятельное руководство по SQL INSERT INTO SELECT.
- Insert into ... values ( SELECT ... FROM ... ) – Stack Overflow – Обсуждение различных вариантов применения INSERT с SELECT.
- Different Options for Importing Data into SQL Server – Комплексный обзор различных способов импорта данных в SQL Server, включая INSERT INTO.