Copia registros da tabela corrente para uma nova tabela.
Sintaxe
COPY TO Arquivo [FIELDS Campos] [FOR CondFor] [WHILE CondWhile] [NEXT nRecs] [RECORD nRecno] [REST] [ALL] [VIA RDD] [SDF | DELIMITED [WITH BLANK | cDelimitador] ]
Descrição
Este comando é utilizado para copiar alguns registros da tabela corrente para o arquivo especificado por “TO cArquivo” utilizando-se o driver especificado por “VIA RDD” se especificado. Se forem especificados os campos de interesse através de “FIELDS Campos” apenas eles serão copiados, caso contrário todos campos o serão. Se não forem especificadas as condições para que o registro seja copiado, copia toda a tabela como se estivesse especificada a opção “ALL”.
Pode-se especificar um escopo para que os registros sejam copiados através das opções “FOR CondFor” e “WHILE CondWhile“. Pode-se também limitar o número de registros a serem copiados através da opção “NEXT nRecs” e determinar que a cópia dos registros deve-se iniciar a partir do registro atual com “REST”, mas caso contrário o comando executa um DBGOTOP() antes de iniciar a cópia. Se é desejado copiar apenas determinado registro pode-se defini-lo através da especificação do recno com “RECORD nRecno“.
Além de copiar registros para uma tabela normal, pode-se copiar registros para um arquivo texto que contenha os dados desejados. Existem duas formas de gerar estes arquivos textos com COPY TO, utilizando-se o SDF que trabalha com tamanhos de registros e campos fixos (preenchendo com espaços) ou através de um delimitador que separa os campos”,”. Deve-se especificar na cópia qual o tipo do arquivo texto através das opções “SDF” ou “DELIMITED”. Pode-se ainda especificar qual o delimitador utilizado nas strings da seguinte forma:
- “DELIMITED WITH BLANK” – as strings não possuem delimitador;
- “DELIMITED WITH cDelimitador” – as strings são delimitadas com o caracter especificado;
Caso seja omitido, o delimitador será considerado o delimitador padrão (” “).
Exemplo
Este exemplo demonstra como utilizar o comando COPY TO criar nova tabela com alguns campos escolhidos e alguns registros (apenas 10) da tabela atual pertencentes a um escopo definido a partir do registro atual para determinada tabela:
USE Cliente VIA “CTREECDX” NEW
COPY TO Amigos FIELDS Nome,Nascimento,End,Tel FOR Idade>20 WHILE Nome<“VVV” NEXT 10 REST
Este exemplo demonstra como se pode utilizar o comando COPY TO para gravar os dados de uma tabela em um arquivo do tipo texto (DELIMITED) e incluí-los a outra tabela com o comando APPEND FROM:
USE Amigos NEW
COPY TO temp DELIMITED // Registro: “Jose”,19751108,69411233,12.00
COPY TO temp1 DELIMITED WITH BLANK // Registro: Jose 19751108 69411233 12.00
COPY TO temp2 DELIMITED WITH “@” // Registro: @Jose@,19751108,69411233,12.00
USE Cliente NEW
APPEND FROM temp DELIMITED
USE Cliente1 NEW
APPEND FROM temp1 DELIMITED WITH BLANK
USE Cliente2 NEW
APPEND FROM temp2 DELIMITED WITH “@”
Este exemplo demonstra como se pode utilizar o comando <@>COPY TO para gravar os dados de uma tabela em um arquivo do tipo texto (SDF) e incluí-los a outra tabela com o comando APPEND FROM:
USE Amigos NEW
COPY TO temp3 SDF // Registro: Jose 1975110869411233 12.00
USE Cliente3 NEW
APPEND FROM temp3 SDF
