Accodare i dati da una tabella di un db ad un'altra tabella di un altro db

Ciao.

Debbo accodare i dati estratti da un db Sybase in una tabella MySQL creata appositamente.

Nello script che ho allegato vi è prima una identificazione dell'utente, poi viene creata una tabella chiamata stat+nomeutente, tabella creata che presenta le stesse caratteristiche della tabella che si trova su Sybase.

Dopo aver creato questa tb in MySQL identica in struttura a quella presente su Sybase, dovrei accodare tutti i dati presenti nella tb su Sybase in quella su MySQL.

Questo lo script :

<?php


/* Mi connetto al db per prendere la matricola */

$host = 'localhost';
$user = 'root';
$password = '';
$database = 'intranet';
$link=mysql_connect("$host","$user","$password")
or die ("Non riesco a connettermi a <b>$host");
mysql_select_db ($database, $link)
or die ("Non riesco a selezionare il db $database<br>");


/* Estraggo la matricola dell'operatore parcheggiandola in un array  */

$utente = "SELECT * FROM utenti WHERE matricola = Right ('$LOGON_USER',5)";
$query = mysql_query ($utente,$link)
or die ("Non riesco ad eseguire la richiesta $utente");
while ($valori = mysql_fetch_array ($query))  {
$tabella_stat_appo = $valori ["matricola"];
}


/* Preparo il nome della futura tabella da creare composta della dicitura stat + nome utente */

$stat = stat.$tabella_stat_appo;


/* Selezione il db di appoggio tabelle per il nuovo S.O.L. */

$database_appo = 'sol_appo';
mysql_select_db ($database_appo, $link)
or die ("Non riesco a selezionare il db $database_appo<br>");


/* Creo la Tabella iApplication_Stat chiamandola stat + n° matricola dell'utente che sta effettuando la interrogazione */
$tabella_stat="CREATE TABLE $stat (
Timestamp TIMESTAMP,
ApplicationID INT,
Application VARCHAR(200),
CallsAbandoned INT,
CallsAbandonedAftThreshold INT,
CallsAbandonedDelay INT,
AbdDelay2 INT,
Site VARCHAR(200));";
mysql_query ($tabella_stat, $link)
or die ("Non riesco ad eseguire la query $tabella_stat");


/* Mi connetto al Symposium per estrarre i dati e accodarli nella tabella creata */

$Driver= 'Sybase System 11 (Version 10.0.3t4)';
$host= 'ICCM_PREVIEW';
$user= 'report';
$pass= 'report03';
$db= 'blue';
$conn=@Sybase_connect("$host","$user","$pass")
or die ("Non riesco a connettermi a <b>$host");


$data = '2006-03-28';
$data2 = '2006-03-29';


/* Lancio la query specifica del Desk in analisi */

$sql = "INSERT INTO $stat SELECT iApplicationStat.* FROM iApplicationStat WHERE ((iApplicationStat.Timestamp>='$data') AND (iApplicationStat.Timestamp<'$data2') AND (iApplicationStat.ApplicationID = 10174))";
$query = Sybase_query($sql,$conn) or die ("non riesco ad eseguire la query:<br><b>$sql");


/* Chiudo la connessione al db del Symposium e al db MySQL */

Sybase_close ($conn);
mysql_close ($link);

?>

l'errore che viene restituito è il seguente:

Warning: Sybase: Server message: stat37158 not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output). (severity 16, procedure N/A) in C:\Inetpub\wwwroot\INTRANET\TOOLS\StatisticheTelefonia\index2.php on line 236
non riesco ad eseguire la query:
INSERT INTO stat37158 SELECT iApplicationStat.* FROM iApplicationStat WHERE ((iApplicationStat.Timestamp>='2006-03-28') AND (iApplicationStat.Timestamp<'2006-03-29') AND (iApplicationStat.ApplicationID = 10174))

in pratica la query non vede la tabella MySQL creata, la stat37158.

Ma non risiede in memoria?

Come posso fare in modo che questa query che interroga la tb su Sybase vada poi ad inserire i dati nella tb MySQL?

Un grazie a tutti.

Ciao

Stone

 :bye:

 

inviato 10 anni fa
stone
X 0 X
in pratica la query non vede la tabella MySQL creata, la stat37158.

piuttosto mi sembra che la query non trova la tabella sul DB Sybase!

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

si, infatti questa tb creata si trova su MySQL. Non si possono accodare dati prendendoli da una tabella Sybase per accodarli dentro una tb in MySQL?

 :bye:

risposto 10 anni fa
stone
X 0 X

Si ma con le istruzioni

$sql = "INSERT INTO $stat SELECT iApplicationStat.* FROM iApplicationStat WHERE ((iApplicationStat.Timestamp>='$data') AND (iApplicationStat.Timestamp<'$data2') AND (iApplicationStat.ApplicationID = 10174))";

$query = Sybase_query($sql,$conn) or die ("non riesco ad eseguire la query:<br><b>$sql");

stai facendo l'esatto contrario!

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ma forse tu stai sercando di fare una query che coinvolge contemporaneamente due database server...

non si può  :nono:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

yes!

Sigh, peccato, cercherò qualche altra soluzione allora.

Ti ringrazio

Ciao

Stone :bye:

risposto 10 anni fa
stone
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda