Синтаксис SQL для проверки того, был ли INSERT успешным? Insert синтаксис sql


SQL INSERT INTO SELECT, заявление

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

INSERT INTO SELECT, заявление копирует данные из одной таблицы и вставляет его в существующую таблицу.

Заявление SQL INSERT INTO SELECT,

INSERT INTO SELECT, оператор выбирает данные из одной таблицы и вставляет его в существующую таблицу. Любые существующие строки в целевой таблице не изменяются.

SQL INSERT INTO SELECT, Синтаксис

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

INSERT INTO table2 SELECT * FROM table1;

Или же мы можем скопировать только те столбцы, которые мы хотим в другую, существующую таблицу:

INSERT INTO table2 (column_name(s)) SELECT column_name(s) FROM table1;

Демо-версия базы данных

В этом уроке мы будем использовать хорошо известную базу данных Борей.

Ниже приводится подборка из "Customers" таблицы:

Пользовательский ИД Имя Клиента Контактное лицо Адрес город Почтовый индекс Страна
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitucion 2222 Mexico D.F. 05021 Mexico
3 Antonio Moreno Taqueria Antonio Moreno Mataderos 2312 Mexico D.F. 05023 Mexico

И выбор из "Suppliers" таблицы:

SupplierID Наименование поставщика Контактное лицо Адрес город Почтовый индекс Страна Телефон
1 Экзотические Liquid Шарлотта Купер 49 Гилберта St. Londona EC1 4SD Великобритания (171) 555-2222
2 Новый Орлеан Cajun наслаждений Shelley Берк PO Box 78934 Жители Нового Орлеана 70117 США (100) 555-4822
3 Homestead Бабушка Келли Regina Мерфи 707 Oxford Rd. Ann Arbor 48104 США (313) 555-5735

SQL INSERT INTO SELECT, Примеры

Копирование только несколько столбцов из "Suppliers" Into "Customers" :

пример

INSERT INTO Customers (CustomerName, Country) SELECT SupplierName, Country FROM Suppliers;

Попробуй сам "

Копирование только немецких поставщиков в "Customers" :

пример

INSERT INTO Customers (CustomerName, Country) SELECT SupplierName, Country FROM SuppliersWHERE Country='Germany';

Попробуй сам "

www.w3bai.com

sql - Синтаксис SQL для проверки того, был ли INSERT успешным?

Я работаю над заданием школы, которое хочет, чтобы я вставлял некоторые новые значения в таблицу базы данных, а затем печатал сообщение на основе того, был ли успешным INSERT.

Вопрос таков:

Напишите сценарий, который пытается вставить новую категорию с именем «Гитары» в таблицу «Категории». Если вставка прошла успешно, сценарий должен отобразить это сообщение: УСПЕХ: Запись была вставлена.

Если обновление не увенчалось успехом, сценарий должен отобразить сообщение примерно так: FAILURE: запись не была вставлена. Ошибка 2627: нарушение ограничения UNIQUE KEY 'UQ_ Categori _8517B2E0A87CE853'. Невозможно вставить дублирующий ключ в объект «dbo.Categories». Значение дублирующегося ключа (гитары).

В настоящее время таблица этих категорий состоит из 2 столбцов: CategoryID и Category name. Он заполнен значениями

1 Guitars 2 Basses 3 Drums 4 Keyboards

Очевидно, что категория «Гитары», которую хочет задать вам вопрос, уже существует, поэтому я предполагаю, что вся суть вопроса заключается в том, чтобы заставить ее напечатать сообщение об ошибке. Логика вопроса кажется довольно простой; вставьте категорию гитар в таблицу. Если вставка прошла успешно, напечатайте такую-то. Если это было неудачно, напечатайте так себе и так. Я просто не уверен в синтаксисе. Вот код SQL, который у меня есть до сих пор:

USE MyGuitarShop; INSERT INTO Categories (CategoryID, CategoryName) VALUES (5, 'Guitars') IF ( ) --insert is successful PRINT 'SUCCESS: Record was inserted' ELSE --if insert is unsuccessful PRINT 'FAILURE: Record was not inserted.' PRINT 'Error 2627: Violation of UNIQUE KEY constraint 'UQ__Categori__8517B2E0A87CE853'.' PRINT 'Cannot insert duplicate key in object 'dbo.Categories'. The duplicate key value is (Guitars).'

Я чувствую, что в этом выражении IF будет какое-то булево уравнение (IF INSERT = успех, IF success = TRUE и т. Д.), Но я просто не уверен, как его записать. Я на правильном пути?

EDIT: Я должен упомянуть, что я использую SQL Server 2012

code-examples.net

sql - Синтаксис SQL для проверки того, был ли INSERT успешным?

Я работаю над назначением школы, которое хочет, чтобы я вставлял некоторые новые значения в таблицу базы данных, а затем печатал сообщение на основе того, был ли успешным INSERT.

Вопрос будет таким:

Напишите script, который пытается вставить новую категорию с именем "Guitars" в таблицу категорий. Если вкладка выполнена успешно, scriptдолжен отображать это сообщение: УСПЕХ: Запись была вставлена.

Если обновление не увенчалось успехом, script должно отобразить сообщение что-то вроде этого: FAILURE: Запись не была вставлена. Ошибка 2627: Нарушение ограничения UNIQUE KEY 'UQ_Categori_8517B2E0A87CE853'. Невозможно вставить дублирующий ключ в объект "dbo.Categories". Дубликат значение ключа (гитары).

В настоящее время таблица этих категорий состоит из 2 столбцов: CategoryID и Category name. Он заполняется значениями

1 Guitars 2 Basses 3 Drums 4 Keyboards

Очевидно, что категория гитар, которую вы хотите вставить в вопрос, уже существует, поэтому я предполагаю, что вся суть вопроса заключается в том, чтобы заставить ее распечатать сообщение об ошибке. Логика вопроса кажется довольно простой; вставьте категорию гитар в таблицу. Если вставка прошла успешно, напечатайте такую-то. Если это было неудачно, напечатайте так себе и так. Я просто не уверен в синтаксисе. Вот код SQL, который у меня до сих пор:

USE MyGuitarShop; INSERT INTO Categories (CategoryID, CategoryName) VALUES (5, 'Guitars') IF ( ) --insert is successful PRINT 'SUCCESS: Record was inserted' ELSE --if insert is unsuccessful PRINT 'FAILURE: Record was not inserted.' PRINT 'Error 2627: Violation of UNIQUE KEY constraint 'UQ__Categori__8517B2E0A87CE853'.' PRINT 'Cannot insert duplicate key in object 'dbo.Categories'. The duplicate key value is (Guitars).'

Я чувствую, что в этом выражении IF будет какое-то булево уравнение (IF INSERT = успех, IF success = TRUE и т.д.), но я просто не уверен, как его записать. Я на правильном пути?

EDIT: я должен упомянуть, что я использую SQL Server 2012

qaru.site

sql-server - Синтаксис INSERT INTO OPENROWSET с динамическим T-SQL

Мне кажется, что я читал каждую страницу в Интернете о том, как динамически создавать вывод Excel из сценария T-SQL. Вот что я имею:

Use Master GO EXEC master.dbo.sp_configure 'show advanced options', 1 RECONFIGURE WITH OVERRIDE GO EXEC master.dbo.sp_configure 'xp_cmdshell', 1 RECONFIGURE WITH OVERRIDE GO EXEC sp_configure 'ad hoc distributed queries', 1 RECONFIGURE GO EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1 GO EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1 GO USE CommercialLending GO DECLARE @LoopCounter TINYINT = 1 DECLARE @LoopMaxCount TINYINT = (SELECT COUNT(DISTINCT OFFICER) FROM CommercialLending.dbo.CMLTrial) WHILE (1=1) BEGIN DECLARE @OfficerName VARCHAR(4000) = ( SELECT OFFICER FROM (SELECT DISTINCT OFFICER, ROW_NUMBER() OVER (ORDER BY OFFICER) AS rownumber FROM CommercialLending.dbo.CMLTrial GROUP BY Officer) AS OFFICER WHERE rownumber = @LoopCounter) DECLARE @FileName varchar(400) = @OfficerName+ '.xlsx' DECLARE @FullFileName varchar(400) = 'O:\MIS\Python\Programs\CommercialLending\'+@FileName DECLARE @CopyFile varchar(800) = 'copy O:\MIS\Python\Programs\CommercialLending\Template.xlsx copy O:\MIS\Python\Programs\CommercialLending\' + @FileName EXEC xp_cmdshell @CopyFile DECLARE @sql nvarchar(4000) SET @sql = 'INSERT INTO OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',Excel 12.0;Database='+@FullFileName+';'',''SELECT * FROM [Sheet1$])'' SELECT * FROM dbo.CMLTrial WHERE Officer='''+@OfficerName+'' EXEC (@sql) SET @LoopCounter = @LoopCounter+1 IF (@LoopCounter > @LoopMaxCount) BREAK; END Use Master GO EXEC master.dbo.sp_configure 'xp_cmdshell', 0 RECONFIGURE WITH OVERRIDE GO EXEC sp_configure 'ad hoc distributed queries', 0 RECONFIGURE GO EXEC master.dbo.sp_configure 'show advanced options', 0 RECONFIGURE WITH OVERRIDE GO EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 0 GO EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 0 GO

Я знаю, что моя проблема в строке, которая назначает строку INSERT INTO OPENROWSET переменной @sql:

SET @sql = 'INSERT INTO OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',Excel 12.0;Database='+@FullFileName+';'',''SELECT * FROM [Sheet1$])'' SELECT * FROM dbo.CMLTrial WHERE Officer='''+@OfficerName+''

Для жизни я не могу понять, где моя синтаксическая ошибка. Может ли кто-нибудь помочь мне разобраться, а также, если это возможно, дать руководство по определению стандартного синтаксиса для использования INSERT INTO OPENROWSET в виде строки в переменной?

задан BigDevJames 09 сент. '14 в 23:442014-09-09 23:44 источник поделиться

qaru.site

Синтаксис BULK INSERT Безопасный SQL

Я не могу получить инструкцию SQL Bulk Insert для запуска через C # на моем веб-сервере или локально. Я пытаюсь импортировать данные из текстового файла в веб-сервер SQL.

После подключения к веб-серверу / SQL Server оператор, который я использую, выглядит следующим образом.

BULK INSERT dbo.FNSR FROM 'http:\\yahoodd.velocitytrading.net\txtfiles\FNSR.txt' WITH ( FIRSTROW = '2', FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n' )

то я получаю эту ошибку.

Невозможно нагрузить, потому что файл «\ yahoodd.velocitytrading.net \ txtfiles \ FNSR.txt» не может быть открыт. Код ошибки операционной системы 53 (сетевой путь не найден.).

Я пробовал это с «http»: //webserver.remotefile.txt ', как указано выше, также … с немного другим результатом (код ошибки 123 dir, path not valid)

Есть идеи?? Я не могу загрузить файл txt на WebServer в качестве локального файла txt … что я делаю неправильно … как это должно работать?

Solutions Collecting From Web of "Синтаксис BULK INSERT"

Чтобы указать общий файл данных, используйте его имя универсального названия (UNC), которое принимает общую форму, \ Servername \ Sharename \ Path \ Filename. Кроме того, учетная запись, используемая для доступа к файлу данных, должна иметь разрешения, необходимые для чтения файла на удаленном диске.

BULK INSERT AdventureWorks2008R2.Sales.SalesOrderDetail FROM '\\computer2\salesforce\dailyorders\neworders.txt'; GO

http://msdn.microsoft.com/en-us/library/ms175915.aspx

Его две черты и нет http

BULK INSERT dbo.FNSR FROM '\\yahoodd.velocitytrading.net\txtfiles\FNSR.txt' WITH ( FIRSTROW = '2', FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n' )

Это должен быть локальный диск.

Часть FROM 'http: \ yahoodd.velocitytrading.net \ txtfiles \ FNSR.txt' должна быть заменена на C: ……. \ some.txt .

Если это из http: // … вам придется перебирать его.

sql.fliplinux.com