ALTE DOCUMENTE
|
||
Importuri-exporturi de date
1.Transferul de date īntre fisiere si tablouri
De multe ori folosirea tablourilor de date este preferabila folosirii fisierelor de date deoarece viteza de accesare a memori 13313x231n ei este net superioara vitezei de accesare a discului. De ex, sortarea unui masiv este mult mai rapida decāt sortarea unui fisier. Comunicarea īntre baze de date si tablouri se realizeaza īn ambele sensuri prin comezi corespunzatoare.
1.1.APPEND FROM ARRAY <tablou> [FOR<cond>] [FIELDS <lista-camp>]
Se adauga la baza de date articolele preluate dintr-un tablou; fiecare linie corespunde unei īnregistrari; coloanele se copie īn ordinea cāmpurilor; se ignora elementele īn plus; cāmpurile īn plus se completeaza automat cu valori vide. Se face conversia la tipul cāmpului.
Exemplu: fie tabela ELEVI.DBF, sa se adauge elementele masivului NOTE.
ELEVI_IMPORT.DBF NOTE[2,6]
nume |
rom |
mate |
fiz |
x 8 8 7 8 10 y 10 9 8 9 10 |
||
Ion | ||||||
x | ||||||
y |
append from array note
1.2.GATHER FROM<tablou>/MEMVAR[FIELDS<LISTA-CAMP>][memo]
Comanda permite copierea continutului vectorului <tablou> sau a unor variabile de memorie cu acelasi identificator (MEMVAR) īn īnregistrarea curenta din baza de date activa. Copierea se face de la stānga la dreapta īn ordinea coloanelor daca nu este precizata clauza FIELDS. Clauza MEMO este necesara daca printre cāmpurile de copiat se gaseste si un cāmp memo.
Exemplu: se doreste adaugarea unui elev cu notele sale īn tabela elevi:
varianta1 varianta2 linia de comanda
declare a(5)
a[1]='Luca Matei' accept 'numele elevului' to nume do elevi_imp
a[2]=8 input 'nota la rom' to rom
a[3]=8 input 'nota la mate' to mate
a[4]=7 input 'nota la fizica' to fiz
a[5]=8 input 'nota la chimie' to ch
use elevi_import use elevi_import
append blank append blank
gather from a gather memvar
use elevi_import use elevi_import
list list
1.3.COPY TO ARRAY <tablou> [FIELDS <lista-campuri>][<domeniu>] [FOR <cond>][WHILE <cond>]
Comanda realizeaza trecerea articolelor din baza de date īntr-un tablou astfel īncāt articolul devine o linie. Daca numarul de īnregistrari depaseste numarul de linii se ignora cele īn plus.
use elevi_imp
copy to array note for rom=10
DISPLAY MEMORY LIKE note
1.4.SCATTER [FIELDS <lista-camp>][memo] TO <tablou>/MEMVAR
Cāmpurile din baza de date activa specificate īn clauza FIELDS (sau toate cāmpurile, optiune implicita) se vor copia īn tabloul din clauza TO <tablou> sau īn variabilele specificate (clauza MEMVAR).
Exemplu:
use elevi_import
go top
scatter memvar
?m.nume, m.mate, m.rom, m.fiz
1.5.REPLACE FROM ARRAY <tablou> [FIELDS <lista-campuri>] <domeniu> [FOR <cond>] [WHILE <cond>]
Comanda realizeaza corectia unor valori ale bazei de date prin utilizarea tablourilor. Se īnlocuiesc cu elementele din tabloul specificat acele valori care corespund cāmpurilor din clauza FIELDS (implicit toate cāmpurile). Comanda REPLACE are ca domeniu implicit articolul curent.
Exercitiul 1: Presupunem ca pentru sutinerea examenului de bacalaureat la informatica, elevii au fost īmpartiti īn 3 comisii, fiecare comisie organizāndu-si singura examenul si evidenta elevilor. Se cere concatenarea datelor īn vederea calcularii mediei si afisarii rezultatelor.
COMISIE1.BDF COMISIE2.BDF
nume |
P1 |
P2 |
Proiect |
Albu | |||
Andrei | |||
Aurel |
Nume |
Proba1 |
Proba2 |
Atestat |
Barbu | |||
Baciu | |||
Bucur |
Nume |
Pr1 |
Pr2 |
Pro |
Carp | |||
Carbunaru |
|
||
Cocea |
COMISIE3.BDF
use comisie1 in 1
use comisie2 in 2
use comisie3 in 3
select 4
create dbf bac (nume C(6), proba1 N(5,2), proba2 N(5,2), proiect N(5,2))
sele 1
copy to array a
sele 2
copy to array b fields nume, proba1, proba2, atestat
sele 3
copy to array c fields nume, pr1, pr2, pro
sele 4
append from array a
append from array b
append from array c
use bac
list
2.Importul - exportul de date
Transferul de informatii īntre produse program, sau mai bine spus īntre baze de date tip Xbase si alte tipuri de fisiere se poate face īn ambele sensuri prin comenzi speciale.
2.1.APPEND FROM <fisier> TYPE<tip-fisier>
Comanda APPEND permite trecerea datelor din fisierul de tip special (indicat īn clauza TYPE ) īn baza de date activa. <tip-fis> poate fi:
DELIMITED/ DELIMITED WITH <car> - atunci cānd fisierul sursa este īn format ASCII sau ale caror cāmpuri sunt delimitate de <car>;
DELIMITED WITH BLANK pentru fisiere ale caror cāmpuri sunt delimitate de spatiu;
SDF pentru fisier ASCII format data sistem (extensie.txt);
WKS pentru fisier LOTUS 1-2-3, etc.
2.2.COPY TO <fisier> TYPE <tip-fisier> - permite transferul de date dintr-o tabela .DBF īn alt fisier. Clauza TYPE are aceleasi valori ca la comanda APPEND FROM.
2.3.IMPORT FROM <fisier> TYPE PDOX/RPD/WKS/WRK/XLS - realizeaza conversia unui fisier de alt tip īntr-un fisier de tip .DBF
2.4.EXPORT TO <fisier> FIELDS<lista-campuri>[<domeniu>][FOR<cond>] [WHILE <cond>][TYPE] DIF/MOD/WKS/WRK/XLS
Se copie īnregistrarile selectate cu clauzele FOR, while <domeniu> īn fisierul <fisier> de tipul specificat. Se va putea indica si lista cāmpurilor care vor fi copiate īn clauza FIELDS.
Exemplu: fie tabela ELEVI.bdf cu urmatorul continut
nume |
dn |
cls |
absm |
Absn |
M1 |
M2 |
M3 |
An |
Bi |
|
Popescu |
11a | |||||||||
Ionescu |
11a | |||||||||
Zaharescu |
11b | |||||||||
Fictiv |
11b | |||||||||
Albu |
11a |
copy to xxx delimited && operatie de copiere īntr-un fisier text
type xxx.txt
copy to xxx delimited blank
type xxx.txt
copy to xxx delimited with blank
type xxx.txt
copy to xxx delimited with tab
type xxx.txt
copy to xxx delimited
type xxx.txt
append from xxx delimited && se adauga datele din xxx.txt
go 6 && ne pozitionam pe īnregistrarea nr 6
delete rest
pack
copy to zzz type sdf && realizam exportul bazei de date sub forma standard
type zzz.txt
2.5. Realizarea interactiva a operatiei de copiere
Indiferent de tipul fisierului destinatie, fie tot un fisier tabela Xbase, fie un alt tip de fisier utilizat īn aplicatiile de gestiune a foilor de calcul sau baze de date, se deschide fereastra File Export. Optiunile asociate operatiei de exportare vizeaza filtrarea articolelor (clauzele Scope, For, While) si selectarea cāmpurilor care vor fi copiate (clauza Fields).
O fereastra asemanatoare se dechide pentru operatia de importare/ adaugare de date din fisier baza de date sau alt tip de fisier.
|