利用navicat导出数据表结构和insert语句,navicatinsert
用了navicat一段时间了,发现navicat确实非常方便,可支持多种数据库。以前一直觉得他的到处sql文件比较麻烦,每个表都会生成一个sql文件,不方便进行导入操作。今天突然发现它也有批量到出成一个sql文件的功能。
操作步骤
菜单 : 数据传输
目标选择,然后进行相应的设置后点击开始。
打开navicat,然后打开你要导出的数据库,右键,选择转储sql文件,即可!或者打开数据库,在顶部有个导出向导,选择导出的东西即可!
既然有人提出用语句实现,那我们就用语句,我把她做成一个存储过程,在环境sql2005下测试通过,有一点说明:表中的字段值不能为空,否则将返回一个空值:
第一步:--首先创建一张结果表,保存要输出的数据
create table out_data
(flag int,--标识
tb_name varchar(1000),--表名称
insert_info varchar(8000))--插入的语句
第二步,创建存储过程:
create proc [dbo].[out_table_data]
@tb_name varchar(1000)--表名称
as
declare @str varchar(8000),--存放字段名称
@insert_str varchar(8000),--存放处理结果串
@bl varchar(8000),--存放变量及其数据类型
@bl2 varchar(8000),--存放变量名称
@bl3 varchar(8000),--数据类型
@bd varchar(1000),--引号使用开始
@bd2 varchar(1000),--引号使用结束
@sum_str varchar(8000),--存放赋值变量和字段
@sum_str_column varchar(8000),--存放要提取的变量字段
@j varchar(3000),--字段个数
@i varchar(3000)--循环起始量
set @str=''
set @bl='declare '--声明变量(保留中间的空格)
set @bl2=''
set @bl3=''
set @i=1
set @sum_str=''
set @sum_str_column=''
set @bd='''''''+'
set @bd2='+'''''''
--字段个数
select @j=count(a.[name]) from syscolumns A inner join sysobjects B
on A.id = B.id and b.name = @tb_name
--自动定义变量放入串@bl中(case when c.[name] in('char','nchar','varchar','nvarchar') then '('+convert(varchar(500),a.length)+')' else '' end)
select @bl=@bl+'@'+a.[name]+' '+'varchar(8000)'+',' ,@bl3=@bl3+c.[name]+',' from syscolumns A inner join sysobjects B on A.id = B.id
inner join systypes c
on A.xtype=C.xusertype
and b.name = @tb_name
set @bl=left(@bl,len(@bl)-1)
--要查询的表字段......余下全文>>
