2015-02-04 5 views
2

У меня возникла проблема, когда я нахожусь в процессе создания базы данных для преподавателей для моего проекта. В рамках этого процесса мне, возможно, придется использовать несколько операторов "Insert", чтобы вводить все различные сведения о каждом учителе для создания строк данных о них. Итак, если я скажу 1000 учителей, тогда мне приходится вручную писать 1000 вставных операторов для создания отдельных записей для каждого из них. Это определенно утомительное упражнение.Преобразование нескольких операторов SQL-Insert в один оператор Insert

Мне было интересно, может ли быть способ или метод, с помощью которого я мог бы свести к минимуму время, затраченное на этот процесс! Есть ли хранимая процедура или что-то еще, что могло бы автоматизировать эту задачу? Могу ли я создать и использовать что-то вроде Макросов для этого?

Например, кусок кода MySQL (индивидуальное заявление) может быть:

insert into <tablename> (attribute1, attribute 2, attribute 3, ....., attribute n) values (value1, value2, value3, ......., value n) 

Любые предложения по этому вопросу будет весьма признателен. Я должен знать код в T-SQL (для MS SQL Server)

Спасибо, Сета

+1

возможно попробуйте язык программирования, который имеет структуры циклов и генерирует SQL для вас и сохраняет его в файл, который вы можете просто запустить? –

+0

Что является источником для вставки данных, я имею в виду, откуда вы получаете значение 'value1, value2, value3, ....... value' –

+0

, может ли этот вопрос помочь вам ... http://stackoverflow.com/questions/2624713/how-do-i-insert-multiple-rows-without-repeat-the-insert-into-dbo-blah-part – Dhruv

ответ

0

Скачать первую базу данных имени. Например, от http://www.namepedia.org/en/firstname/

Затем импортируйте эту базу данных в таблицу со вставкой для идентификации.

Тогда вы можете написать только сценарий так:

DECLARE @i INT = 1000, @y INT = 1, 


WHILE @i != 0 
BEGIN 



INSERT INTO yourtable (FirstName, LastName) 
SELECT FirstName, FirstName AS LastName 
FROM DownloadedTable a 
JOIN DownloadedTable b ON b.IdentityId = @i 
WHERE a.IdentityId = @y 

    SET @i = @i-1 

END

Или thisone лучше:

SELECT TOP 100 FirstName 
FROM DownloadedTable a 
JOIN (SELECT TOP 10 FirstName as LastName FROM DownloadedTable ORDER BY FirstName Desc) b ON 1=1 

Если вам нужно реальные фамилии, поиск в телефонных базах данных ... для