сгенерировать скрипт содержимого одной таблицы в виде файла .sql (через код) - PullRequest
0 голосов
/ 19 декабря 2009

возможно ли, что я создаю хранимую процедуру, которая генерирует содержимое определенной таблицы по пути, который я передал в качестве ее параметра (хранимой процедуры)?

Ответы [ 3 ]

1 голос
/ 19 декабря 2009

Попробуйте код ниже

create procedure dbo.ShowAllRows (@tabName VARCHAR(200) )
as
begin
    declare @Sql    NVARCHAR(2000)
    set @Sql = 'select * FROM '+@tabName
    EXEC (@sql)
end
go
exec ShowAllRows  'sys.configurations'

Я пропустил часть пути, я полагаю, вам нужен код вышеупомянутого типа со вторым параметром, т.е. @outputFileName

Если ваш SQL-сервер имеет доступ к пути к файлу и вы можете запустить XP_CMDShell, вы можете сделать следующее ...

create procedure dbo.ShowAllRows (@tabName VARCHAR(200),@outPath VARCHAR(200) )
as
begin
    declare @Sql    NVARCHAR(2000)

    set @sql = 'bcp '+@tabName+' out '+@outPath+' -U<user> -P<password> '
    print @sql
    EXEC xp_cmdShell @sql
end

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

0 голосов
/ 19 декабря 2009

попробуйте это:

create proc spOutputData @tbl varchar(500)
as

declare @cmd varchar(4000)

SELECT @cmd = 'bcp ' + @tbl + ' out c:\OutFile.txt -c  -q -Shpas -T'

exec xp_cmdshell @cmd

TEST:

spOutputData 'master.dbo.syslogins'
0 голосов
/ 19 декабря 2009

Если вы имеете в виду структуру таблицы, вот SQL для начала ...

select column_name,data_type,is_nullable
from information_schema.columns
where table_name = '<table name>'
order by ordinal_position

В процедуре просто выполните

create produce ShowColumnsforTable( @tabName VARCHAR(200) )
as
begin
    select column_name,data_type,is_nullable
    from information_schema.columns
    where table_name = @tabName
    order by ordinal_position

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...