Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как скинуть все данные таблицы в виде SQL скрипта (INSERT...)


Layner ©   (2004-04-22 08:29:00) 

не могу найти этот пункт в EM :(
Помню в TOAD для ORACLE была такая опция, тут думал тоже есть в "Generete SQL Script" в свойствах табл, ан нет :(
SQL Damp так сказать.
Заранее благодарю!!!


Nikolay M.   (2004-04-23 16:11:00) [1]

Неужели через DTS не получилось сделать? Не поверю :(


Layner   (2004-04-23 13:35:00) [2]

ZrenBy ©   (22.04.04 10:21)
Спасибо, код сохранил, может пригодится, просто я нашел программу через поисковики, в это же время, с исходниками, которая это делает.
http://sql.softmatics.ru/22.htm
и тут
http://vyaskn.tripod.com/code/generate_inserts.txt


ZrenBy   (2004-04-22 10:21:00) [3]

(c)Serge I

if exists (select * from sysobjects where id = object_id(N'[dbo].[sp_gen_insert ]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_gen_insert ]
GO

SET QUOTED_IDENTIFIER  OFF    SET ANSI_NULLS  ON
GO

--Генерирует скрипт закачки данных операторами INSERT c  учетом NULL-значений и апострофами в тексте
CREATE PROCEDURE sp_gen_insert
@db varchar(30), -- имя БД
@tb varchar(30) -- имя таблицы
AS
--
declare @selstring varchar(2000),
@colname varchar(30),@ch int,@dt tinyint, @isquot char, @csn as varchar(30)

select @selstring='declare tcur cursor  for
SELECT column_name, character_maximum_length,   datetime_precision, CHARACTER_SET_NAME
FROM '+@db+'.'+'INFORMATION_SCHEMA.COLUMNS
WHERE table_name ='''+ @tb+''''
exec (@selstring)
declare @fields varchar(250),@str varchar(2000),@first char
open tcur

fetch tcur into @colname,@ch,@dt,@csn
 if (@ch is null and @dt is null)
set @first=1
 else
set @first=0
set @fields=''
set @str=''

WHILE @@FETCH_STATUS = 0
BEGIN
 if (@ch is null and @dt is null)
set @str=@str +"+','+isnull(cast("+@colname+" as varchar(8000)),"+'"''''"'+")"
 else  
set @str=@str + "+','''+isnull(convert(varchar(8000),"+@colname+",121),"+'"''''"'+")+''''"

  set @fields = @fields+','+@colname
  fetch tcur into @colname,@ch,@dt,@csn
END

if @first=0
set @str="''"+substring(@str,5,2000)
else
set @str=substring(@str,6,2000)

set @str="'insert into '+'"+@tb+"'+' values('+"+@str+"+')'"
close tcur
DEALLOCATE tcur
select @selstring='declare tcur cursor  for select '+@str+' from ' + @db+'..'+@tb
exec (@selstring)

declare @vstr varchar(8000)
open tcur
fetch tcur into @vstr
WHILE @@FETCH_STATUS = 0
BEGIN
--Мудрим с NULL
set @vstr=replace(@vstr,",'''',",',NULL,')
set @vstr=replace(@vstr,",'''')",',NULL)')
set @vstr=replace(@vstr,"('''',",'(NULL,')
set @vstr=replace(@vstr,",'',",',NULL,')
set @vstr=replace(@vstr,",'')",',NULL)')
set @vstr=replace(@vstr,"('',",'(NULL,')
--Мудрим с апострофом
set @vstr=replace(@vstr,"'","''")
set @vstr=replace(@vstr,"('","(")
set @vstr=replace(@vstr,",'",",")
set @vstr=replace(@vstr,"')",")")
set @vstr=replace(@vstr,"',",",")
--Снова NULL
set @vstr=replace(@vstr,",'''''',",',NULL,')
set @vstr=replace(@vstr,",'''''')",',NULL)')
set @vstr=replace(@vstr,"('''''',",'(NULL,')
print @vstr
fetch tcur into @vstr
end
close tcur
DEALLOCATE tcur

GO
SET QUOTED_IDENTIFIER  OFF    SET ANSI_NULLS  ON
GO


Использование

exec sp_gen_insert 'pubs', 'authors'


Layner   (2004-04-22 08:49:00) [4]

sniknik
Может подскажешь :) Один ты на форуме... срочно надо :)


Layner   (2004-04-22 08:41:00) [5]

Мастера! Ну кот нибудь, есть ли такая штука в EM, или QA?


Layner   (2004-04-22 08:30:00) [6]

Да, уточню, это в SQL Server 2000.


Наверх

Титульная страница Поиск, карта сайта Написать письмо