Avatar billede fritter Nybegynder
17. november 2002 - 19:07 Der er 12 kommentarer

Overføre data fra en database til en anden

Jeg har en Database, hvor jeg har ved hjlæp af knap kan slette indholdet i en tabel. Men samtidig med jeg sletter, vil jeg gerne overføre 1 eller 2 af felterne til en ny database. Hvordan gøres det? Den skal bare overføre indholdet, når jeg klikker på knappen "Slet" og slette indholdet der hvor det kom fra.
Jeg bruger MySQL og PHP som programmeringssprog
Avatar billede nemeier Nybegynder
17. november 2002 - 22:36 #1
Mener du database eller tabel ?

Overførsel mellem to databaser kan være lidt besværlige men overførsel mellem 2 tabeller er lidt lettere.
Avatar billede kennie_nm Nybegynder
17. november 2002 - 23:52 #2
tja, det ville jo være nemt i Oracle... :)
Avatar billede fritter Nybegynder
18. november 2002 - 09:15 #3
Det er mellem to databaser der skal overflyttes, altså indholdet i 2 af tabellerne. Lyder det fuldstændig umuligt?
Avatar billede nemeier Nybegynder
18. november 2002 - 09:33 #4
For at være helt sikker spørger jeg igen, for at være sikker på at jeg har forstået det korrekt.

En database er en samling af tabeller normalt opsætter du din database i starten af dit script.
En tabel er en samling af records (linier, f.eks. brugere, ordre eller lign.)

Ud af ovenstående kan jeg ikke læse om du vil have indholdet af en tabel i en database flyttet til en anden tabel i en anden database, eller "bare" fra en tabel til en anden tabel i samme database.
Avatar billede nemeier Nybegynder
18. november 2002 - 09:38 #5
Tabel til tabel kopiering med efterfølgende sletning

INSERT INTO tblTemp2 (fldID) SELECT tblTemp1.fldOrder_ID FROM tblTemp1 WHERE
tblTemp1.fldOrder_ID > 100;
DELETE FROM tblTemp1 WHERE tblTemp1.fldOrder_ID > 100;
Avatar billede fritter Nybegynder
18. november 2002 - 13:37 #6
Det jeg ønskede (Jeg har ikke kigget på overstående kode), var at overføre indholdet fra 2 af de 4 records jeg har i en tabel til en på forhånd allerede oprettet database og tabel.
Avatar billede nemeier Nybegynder
18. november 2002 - 14:32 #7
Overfør informationer fra tbltemp1 til tbltemp2

INSERT INTO tblTemp2 (fldID) SELECT tblTemp1.fldOrder_ID FROM tblTemp1 WHERE
tblTemp1.fldOrder_ID > 100;

Slet informationer i tbltemp1

DELETE FROM tblTemp1 WHERE tblTemp1.fldOrder_ID > 100;
Avatar billede fritter Nybegynder
18. november 2002 - 18:06 #8
Nu er det lige sådan, at jeg ikke helt forstår koden. Det ville ihcertfald være at foretrække. Kunne du evt. prøve at forklare de forskellige detaljer i koden?
I så fald at jeg vil oprette en helt ny database, med en enkelt tabel, hvor jeg så overflytter værdierne, betyder det så, at jeg først skal lukke forbindelsen til den anden? Kort sagt, skal jeg klikke på en enkelt knap, hvorefter jeg etablerer forbindelse til den nye DB og overflytter værdierne til en tabel deri, hvorefter jeg sletter inholdet i den gamle tabel
Avatar billede nemeier Nybegynder
18. november 2002 - 20:34 #9
SELECT kommandoen læser posterne som INSERT tilføjer hvilket er en standard SQL kommando.

Vedr. kopiering mellem databaser vha. SQL kommandoer

Connect til databaseA

SELECT felta INTO OUTFILE 'filnavn.txt' FROM tabela WHERE...
DELETE FROM FROM tabela WHERE...

Connect til databaseB
LOAD DATA INFILE 'filnavn.txt' INTO tabelb (feltb)

SELECT INTO OUTFILE kopier en fils indhold ud på disken
LOAD DATA INFILE indlæser data fra en fil til en tabel

Jeg har ikke prøvet at arbejde med kommandoerne men der står en hel del mere her
http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#SELECT
http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#LOAD_DATA

Jeg håber at det hjælper dig videre
Avatar billede fritter Nybegynder
19. november 2002 - 18:17 #10
Burde det så se ud som dette her:

  elseif ($Slet) {
   
    $db = mysql_connect("127.0.0.1", "root");
    mysql_select_db("Account",$db);
     
    mysql_query ("SELECT pris, dato_tid INTO OUTFILE 'hejsa.txt' FROM hotel WHERE vaerelse = '$query'");
    mysql_query ("DELETE FROM hotel WHERE vaerelse = '$query'");
    mysql_query ("LOAD DATA INFILE 'hejsa.txt' INTO regning (pris, dato_tid)");
   
    echo "Databasen er nu slettet";
       
    echo "<FORM METHOD=POST ACTION=$PHP_SELF>";   
    echo "<INPUT TYPE=SUBMIT VALUE=Tilbage>";
}
   
    Det "sjove" er bare, at det ikke virker. Jeg får godt nok en hejsa.txt fil ud, men den er helt tom!
Avatar billede nemeier Nybegynder
27. november 2002 - 10:08 #11
Prøv at rette din sql query fra dette til:

mysql_query ("SELECT pris, dato_tid INTO OUTFILE 'hejsa.txt' FROM hotel WHERE vaerelse = '$query'");

$SQL = "SELECT pris, dato_tid INTO OUTFILE 'hejsa.txt' FROM hotel WHERE vaerelse = '$query'";
mysql_query( $SQL );
echo "SQL = ".$SQL;
echo "ERROR = ".mysql_error();

Hvilket output får du ?
Avatar billede nemeier Nybegynder
27. november 2002 - 10:11 #12
Men i dette tilfælde har du ikke brug for at skrive det i en extern fil. Du burde kunne lave det med en insert..select

INSERT INTO regning (pris,dato_tid) SELECT pris, dato_tid from hotel WHERE vaerelse = '$QUERY'
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Netcompany A/S

Managing Architect

Csis Security Group A/S

Sales Executive

Netcompany A/S

Test Consultant

Netcompany A/S

Senior Network Engineer