![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как скинуть все данные таблицы в виде 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.