Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal,
Ontem a tarde toda tentei postar este tópico e não deu certo, caso tenha dado certo e duplicou peço desculpas, pois meu navegador ficava dando erro, e não conseguia ver me tópico criado.
Pois bem, sou novo na area e estou com uma duvida, queria gerar scripts do meu banco, gerei o script da minha tabela que eu selecionei pelos seguinte passos:
Botão direito do mouse na tabela desejada --> script object to new window as --> create
Pois bem o sql gerou o script que cria aquela tabela, gostaria de saber se é possivel fazer o mesmo para os registros do banco, exemplo:
Eu tenho meus registros que ja foram cadastrados, gostaria de gerar um script com varios insert's para aquela tabela, não um insert só genérico, gostaria de um insert para cada registro...
É possivel isso? Alguem pode me ajudar??
Estarei muito grato a todos que colaborarem!
Abraços
Spurio,
este erro eh de collation entre as tabelas.
Tem que ver o collation da destino se esta igual a origem.
De um sp_help tabela para verificar o collation.
Abçs
Valeu, deu certo agora...
E como na é perfeito, surgiu um novo erro ...
Seguinte ... Estou usando esta SP
if exists (select * from sysobjects where id = object_id(N'[dbo].[sp_CreateDataLoadScript]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_CreateDataLoadScript]
GO
Create Procedure sp_CreateDataLoadScript
@TblName varchar(128)
as
--exec sp_CreateDataLoadScript 'CARACTTRECHOBackup'
create table #a (id int identity (1,1), ColType int, ColName varchar(128))
insert #a (ColType, ColName)
select case when DATA_TYPE like '%char%' then 1 else 0 end ,
COLUMN_NAME
from information_schema.columns
where TABLE_NAME = @TblName
order by ORDINAL_POSITION
if not exists (select * from #a)
begin
raiserror('No columns found for table %s', 16,-1, @TblName)
return
end
declare @id int ,
@maxid int ,
@cmd1 varchar(8000) ,
@cmd2 varchar(8000)
select @id = 0 ,
@maxid = max(id)
from #a
select @cmd1 = 'select '' insert ' + @TblName + ' ( '
select @cmd2 = ' + '' select '' + '
while @id < @maxid
begin
select @id = min(id) from #a where id > @id
select @cmd1 = @cmd1 + ColName + ','
from #a
where id = @id
select @cmd2 = @cmd2
+ ' case when ' + ColName + ' is null '
+ ' then ''null'' '
+ ' else '
+ case when ColType = 1 then ''''''''' + ' + ColName + ' + ''''''''' else 'convert(varchar(20),' + ColName + ')' end
+ ' end + '','' + '
from #a
where id = @id
end
select @cmd1 = left(@cmd1,len(@cmd1)-1) + ' ) '' '
select @cmd2 = left(@cmd2,len(@cmd2)-8) + ' from ' + @tblName
select '/*' + @cmd1 + @cmd2 + '*/'
exec (@cmd1 + @cmd2)
drop table #a
go
Depois executo a procedure com o nome da tabela, parte do código que esta comentado
e ele me retorna o Script, porém ele não retorna completo ...
Exemplo
insert CARACTTRECHO ( cdLogradouro,cdTrecho,cdEletricidade,cdIluminacao,qtPistas,cdAgua,cdTelefone,cdT
ransporte,cdPasseio,cdMeioFio,cdArborizacao,cdSarjeta,vlLargura,cdEsgoto,cdLimpez
a,inCoordInicioX,inCoordInicioY,inCoordFimX,inCoordFimY,vlLimiteDe,vlLim
Intenderam? Falta o resto do insert ...
Acredito eu que seja alguma coisa que está limitando a procedure... Eu consegui essa procedure na internet em outro forum, porém não me lembro aonde, como eu disse no inicio meu navegador ta dando erros, ele deu erro e fexo tudo .. Então não consegui pergunta pro cara se o problema é esse mesmo ..
Alguem pode me ajudar?? Alguem sabe pq eu não consigo pegar o comando inteiro??
grato a quem colaborar
Spurio,
olha a coincidencia: a qtde de caracteres é de 256. Se você estiver visualizando isso no query analizer, ele vai trazer isso msm. é uma limitacao visual.
Altere estes dois caras aki para text só para garantir.
****
@cmd1 varchar(8000)
@cmd2 varchar(8000)
No QA, vá em TOOLS --> RESULTS --> e olhe a coluna: maximum characters per column:
Altere o valor http://forum.imasters.com.br/public/style_emoticons/default/devil.gif
Se nao for em tools,eh em um menu, eu nao tenho o SQL2000 aki no meu pc =\
Pq nao grava isso em uma tabela fisica para depois você pegar o resultado?! Ou entao salvar em um txt.
Uma ideia ^^
Valeu cara, deu certoo..
Muitoo obrigadoo mesmo meu caro, aproveitando a sua boa vontade ...
Eu tinha gerado um script da tabela tambem, pq eu preciso coloca tudo isso em linhas de código em um sistema que estou desenvolvendo, ou tentando desenvolver..
ai fiz o seguinte:
botão direito do mouse na tabela desejada -->script object to new window as --> create
Ai gero o script da tabela, fui roda o cara agora para ver se funcionava e não deu certo, tipo eu mudei o nome da antiga tabela para criar a mesma tabela denovo e não deu certo...
Fiz algum procedimento errado ou o script que o sql gero pra mim ta errado??
Segue abaixo o SCRIPT
CREATE TABLE [CARACTTRECHO] (
[cdLogradouro] [int] NOT NULL ,
[cdTrecho] [varchar] (6) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[cdEletricidade] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdIluminacao] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[qtPistas] [smallint] NULL ,
[cdAgua] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdTelefone] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdTransporte] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdPasseio] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdMeioFio] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdArborizacao] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdSarjeta] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[vlLargura] [money] NULL ,
[cdEsgoto] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdLimpeza] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[inCoordInicioX] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[inCoordInicioY] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[inCoordFimX] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[inCoordFimY] [varchar] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[vlLimiteDe] [int] NULL ,
[vlLimiteAte] [int] NULL ,
[cdAcessibilidade] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdDrenagem] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdTipoPavimen] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cdCategoriaVia] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[vlLarguraPasseioD] [money] NULL ,
[vlLarguraPasseioE] [money] NULL ,
[cdColetaLixo] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[idLado] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
CONSTRAINT [chCaractTrecho] PRIMARY KEY CLUSTERED
(
[cdLogradouro],
[cdTrecho],
[idLado]
) WITH FILLFACTOR = 90 ON [PRIMARY]
) ON [PRIMARY]
GO
Se puder dar mais uma mão ai ficarei mto grato!!
Até agora muito agradecido pela sua ajuda!!
Beleza, o erro agora era eu mesmo, consegui resolve jus2ka
Um abraço cara... valeu pela compreensão e pela força ae!!!
RESOLVIDO
Com relacao a ajuda, estamos aki pra isso hehehee
Com relacao aos posts duplicados a gente da um jeito http://forum.imasters.com.br/public/style_emoticons/default/devil.gif
Agora, o seu script esta correto, que erro que ele gera?
Abçs
Vlw pelo retorno
Qq coisa estamos pelo forum
Abçs e boa sorte
Bom dia Pessoal, conseguir resolver meu problema, com uma SP..
Pois bem agora me surgiu outro problema, testei essa SP em outras tabelas e deu certo, porém na tabela que eu estou precisando ta dando o seguinte erro:
Server: Msg 457, Level 16, State 1, Line 1
Implicit conversion of varchar value to varchar cannot be performed because the collation of the value is unresolved due to a collation conflict.
Alguem sabe me dizer o que significa isso? O que devo fazer??
Grato a todos que colaborarem!!