生成一个表的内容脚本作为.sql文件(通过代码)

时间:2009-12-19 05:54:07

标签: sql-server tsql

这有可能我创建一个存储过程,生成定义表的内容到我作为其(存储过程)参数传递的路径?

3 个答案:

答案 0 :(得分:1)

尝试以下代码

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进行可信连接

答案 1 :(得分:0)

如果您的意思是表结构,那么这是让您入门的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

答案 2 :(得分:0)

试试这个:

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'