COPIAR TABELAS
Ola a todos!
Pessoal, estou querendo copiar os dados de uma tabela para o outra tabela.
Hoje estou utilizando o seguinte comando.
select * into novatabela from tbltabela_antiga
Porem se eu fizer isto, os indexes, forekeys e constantes não vão.
Algum sabe me dizer se exite outra maneira?
Grato,
Pessoal, estou querendo copiar os dados de uma tabela para o outra tabela.
Hoje estou utilizando o seguinte comando.
select * into novatabela from tbltabela_antiga
Porem se eu fizer isto, os indexes, forekeys e constantes não vão.
Algum sabe me dizer se exite outra maneira?
Grato,
tenta fazer um procedimento [Ô]procedure[Ô] que a partir do seu select faça o loop e que insira na tabela... deve funcionar...
vou mandar um exemplo do MySQL..
espero ter ajudado... dessa forma, eu calculo a composição e estoque dos itens... não tirei nada pra vc entender a estrutura...
vou mandar um exemplo do MySQL..
espero ter ajudado... dessa forma, eu calculo a composição e estoque dos itens... não tirei nada pra vc entender a estrutura...
BEGIN
DECLARE semLinhas BOOLEAN;
DECLARE i INT Default 0;
DECLARE done INT DEFAULT 0;
declare inserido INT default 0;
declare idProdutoComposto INT default 0;
DECLARE Qtde DECIMAL(10,3) Default 0;
DECLARE pc CURSOR FOR
SELECT pc.idprodutocomposto as idProduto, (sum(qtdecomposto)/sum(fator)) AS qtde
FROM produtoscomposicao AS pc
INNER JOIN vendasprodutoscomposicao AS vpc ON vpc.idProdutoComposto=pc.idProduto
INNER JOIN vendasprodutos AS vp ON vp.idVenda=vpc.idvenda and vp.idproduto=vpc.idproduto
WHERE pc.status=0 AND pc.idproduto=vIdProduto
group by pc.idprodutocomposto;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET semLinhas = TRUE;
DROP TABLE IF EXISTS tmpcontagemcomposicao;
OPEN pc;
atualizaComposicao: LOOP
FETCH pc
INTO idProdutoComposto, Qtde;
IF semLinhas THEN
CLOSE pc;
LEAVE atualizaComposicao;
END IF;
select ifnull(max(idproduto),0) from estoque where idproduto=idProdutoComposto into inserido;
if (inserido=0) then
insert into estoque(idproduto, idempresa, composicao)
values (idProdutoComposto, vidEmpresa, qtde);
else
update estoque
set composicao=Qtde
where idproduto=idProdutoComposto and idempresa=vidEmpresa;
end if;
BEGIN
DECLARE semLinhas BOOLEAN;
DECLARE i INT Default 0;
DECLARE done INT DEFAULT 0;
declare inserido INT default 0;
declare idProdutoComposto INT default 0;
DECLARE Qtde DECIMAL(10,3) Default 0;
DECLARE pc CURSOR FOR
SELECT pc.idprodutocomposto as idProduto, (sum(qtdecomposto)/sum(fator)) AS qtde
FROM produtoscomposicao AS pc
INNER JOIN vendasprodutoscomposicao AS vpc ON vpc.idProdutoComposto=pc.idProduto
INNER JOIN vendasprodutos AS vp ON vp.idVenda=vpc.idvenda and vp.idproduto=vpc.idproduto
WHERE pc.status=0 AND pc.idproduto=vIdProduto
group by pc.idprodutocomposto;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET semLinhas = TRUE;
DROP TABLE IF EXISTS tmpcontagemcomposicao;
OPEN pc;
atualizaComposicao: LOOP
FETCH pc
INTO idProdutoComposto, Qtde;
IF semLinhas THEN
CLOSE pc;
LEAVE atualizaComposicao;
END IF;
select ifnull(max(idproduto),0) from estoque where idproduto=idProdutoComposto into inserido;
if (inserido=0) then
insert into estoque(idproduto, idempresa, composicao)
values (idProdutoComposto, vidEmpresa, qtde);
else
update estoque
set composicao=Qtde
where idproduto=idProdutoComposto and idempresa=vidEmpresa;
end if;
/* calcula o estoque do item composto */
call rContaEstoque(idProdutoComposto, vidEmpresa);
END LOOP atualizaComposicao;
END
call rContaEstoque(idProdutoComposto, vidEmpresa);
END LOOP atualizaComposicao;
END
Primeiro você terá que criar a tabela via comando, depois, você pode usar o comando INSERT INTO nova_tabela SELECT * FROM tabela_antiga para migrar o dados. Mas vai uma coisa importante. Se a nova tabela tiver comando de auto incremento (em especial no SQL Server), esta não irá deixar você adicioanr o campo com esta informação da tabela antiga, ao menos que você configure a nova tabela para permitir valores duplicados.
Infelizmente tente os métodos acima porem sem sucesso.
Cria uma replicação.
Ela ira criar uma cópia exata do seu banco.
Ela ira criar uma cópia exata do seu banco.
Mas como posso criar um replica?
Baixe o Sqlmanger do seu Banco,instale e duplique sua tabela.
me mande um email, caso ainda não tenha feito eu lhe oriento.
fab_parreira@itelefonica.com.br
fab_parreira@itelefonica.com.br
Tópico encerrado , respostas não são mais permitidas