Insert ms sql select: SQL INSERT INTO SELECT Statement

Первичный ключ

— SQL Server — можно ли выполнить запрос на выбор, чтобы указать имена столбцов для вставки в команду?

Задавать вопрос

спросил

Изменено
1 год, 2 месяца назад

Просмотрено
214 раз

Вот пытаюсь вставить ту же таблицу саму в себя, но у меня обрыв из-за повторения первичных ключей. Следовательно, я думаю сначала вставить те же строки без первичного ключа, а затем другой запрос вставит первичный ключ auto_increment.

Следующий запрос прерывается из-за первичного ключа (очевидно):

 INSERT INTO table_name
SELECT * FROM имя_таблицы;
 

Хотя следующий запрос возвращает все поля, за исключением первичного ключа:

 ВЫБЕРИТЕ ИМЯ_СТОЛБЦА
ИЗ INFORMATION_SCHEMA. COLUMNS
ГДЕ ИМЯ_ТАБЛИЦЫ = имя_таблицы
КРОМЕ
ВЫБЕРИТЕ ИМЯ_СТОЛБЦА
ИЗ INFORMATION_SCHEMA.TABLE_CONSTRAINTS [tc]
ПРИСОЕДИНЯЙТЕСЬ К INFORMATION_SCHEMA.KEY_COLUMN_USAGE [ku] ON tc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME
    И ku.table_name = table_name
 

Теперь, если я попытаюсь вставить в таблицу не каждый столбец, правильный синтаксис будет следующим:

 INSERT INTO имя_таблицы (<список имен столбцов>)
SELECT <список имен столбцов> FROM table_name
 

Но если я попытаюсь заставить его работать для моего случая, следующий запрос сломается из-за того, что не поддерживается структура таблицы:

 INSERT INTO dbo.drugs
ВЫБЕРИТЕ (ВЫБЕРИТЕ ИМЯ_СТОЛОНЦА
ИЗ INFORMATION_SCHEMA.COLUMNS
ГДЕ TABLE_NAME = "наркотики"
КРОМЕ
ВЫБЕРИТЕ ИМЯ_СТОЛБЦА
ИЗ INFORMATION_SCHEMA.TABLE_CONSTRAINTS [tc]
ПРИСОЕДИНЯЙТЕСЬ К INFORMATION_SCHEMA.KEY_COLUMN_USAGE [ku] ON tc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME
    И ku.table_name = 'наркотики') ОТ наркотиков;
 

Вышеприведенное прерывается, потому что я не упомянул имена столбцов в первой строке. Есть ли способ заставить это работать?

  • sql-сервер
  • первичный ключ

3

Примерно так:

 объявлять @sql nvarchar(max) =
    (
        выберите конкат ('
        вставить в Drugs(',STRING_AGG(cast(имя как nvarchar(max)), ', ') внутри группы (упорядочить по column_id),')
        выберите ',STRING_AGG(cast(name as nvarchar(max))), ', ') внутри группы (упорядочить по column_id),'
        от наркотиков)
        из sys.columns c
        где c.object_id = object_id('наркотики')
          и c.is_identity = 0
   )
   печать(@sql)
   исполняемый (@sql)
 

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

SQL Server Массовая вставка — Google Такой

AlleShoppingVideosBilderMapsNewsBücher

Такой вариант

Подсказка: Begrenze diesuche auf deutschsprachige Ergebnisse. Du kannst deinesuchsprache in den Einstellungen ändern.

МАССОВАЯ ВСТАВКА (Transact-SQL) — SQL Server — Microsoft Learn

Learn.Microsoft.com › Обучение › SQL

26.03.2023 · МАССОВАЯ ВСТАВКА { имя_базы_данных.имя_схемы.имя_таблицы_или_представления | имя_схемы.имя_таблицы_или_представления | table_or_view_name } FROM ‘data_file’ [ WITH …

Синтаксис · Armeree

ОБЛАСТКА Вставки (Transact -SQL) — SQL Server — Microsoft Learn

Learn.microsoft.com ›Learn› SQL ›SQL Server

21.03.2023 · Заявление Insert Onser определяемая пользователем транзакция для импорта данных в таблицу или представление. Необязательно, чтобы использовать несколько …

Синтаксис · Аргументы

SQL Server BULK INSERT

www. sqlservertutorial.net › sql-server-administration

В этом руководстве вы узнаете, как использовать оператор SQL Server BULK INSERT для импорта файла данных в таблицу базы данных.

Массовая вставка данных в SQL Server

www.mssqltips.com › sqlservertip › bulk-insert-data…

02.03.2022 · Первым аргументом для BULK INSERT должно быть имя таблицы или имя представления. · Второй аргумент — это имя исходного файла с полным файлом …

Ähnliche Fragen

Как выполнить массовую вставку в SQL Server?

Как вставить 1000 строк в SQL Server?

Как выполнить массовую вставку в SQL Server из CSV?

Как выполнить массовую вставку в SQL Server из текстового файла?

Минимальное протоколирование вставок массовой загрузки в SQL Server ты должен знать.

МАССОВАЯ ВСТАВКА — T-SQL Ninja

2 Как Загрузить CSV-файлы с помощью оператора BULK INSERT SQL в …

www.youtube.com › смотреть

20. 11.2022 · Используя оператор BULK INSERT, мы можем напрямую импортировать локальный файл данных в таблицу или просмотреть в …
Дата: 5:16
Прислан: 20.11.2022

Чрезвычайно простой способ массовой вставки данных в SQL Server… — YouTube

www.youtube.com › смотреть

01.01.2023 · Массовая вставка данных в таблицу SQL Server из источника в памяти или другого источника таблица базы данных …
Добавлено: 11:33
Прислано: 01.01.2023

Более быстрые массовые вставки SQL с помощью C# — Тим Дешрайвер

timdeschryver.dev

14.08.2022 · SQL имеет встроенный механизм импорта больших объемов данных, который называется Массовая вставка. К счастью для нас, dotnet поддерживает массовую вставку с …

Что такое массовая вставка в SQL? | Темы Scaler

www.scaler.com › темы › bulk-insert-in-sql

11.12.2022 · Следующий оператор представляет собой синтаксис массовой вставки в SQL и позволяет импортировать данные или файлы в таблица или представление в SQL.