Topic: Pubblico - Composto da 8 Posts di 2 Utenti.
| 20 Luglio, 2009 07:04 | #1 | ||
|---|---|---|---|
|
Ciao a tutti, Io ho la seguente situazione, alcuni database in access che devono essere importati in Mysql e poi una serie di query da lanciare. Il mio problema è che utilizzando il mysql migration toolkit, quando carico un db access, viene caricato con un nome diverso ogni volta, quindi le mie query sono inutilizzabili e devo cambiare i riferimenti al db. Inoltre io ero abituato in access a creare una macro che lanciasse tutte le query assieme, come posso fare lo stesso con mysql? Grazue |
|||
| 20 Luglio, 2009 15:02 | #2 | ||
|---|---|---|---|
|
Ciao user:”davide.lauro”, cerchiamo un pò di chiarire la questione. Tu hai più database da migrare? Hai eseguito una procedura di migrazione con il MySQL Migration Toolkit per ciascuno di questi ? Ho cercato di ricostruire la tua sitazione con due DB ACCESS: 1 <strong>AccessDataBase1</strong> e <strong>AccessDataBase2</strong> E il MySQL Migration Toolkit mi ha importato i 2 DB in MySQL con i rispettivi nomi, a questo punto dovrei eseguire le mie query. Non ho capito bene dove si sono verificati gli intoppi. Per quanto riguarda il discorso delle MACRO, c’è da fare un osservazione Microsoft Access non è un verò è proprio DBMS ma al suo interno ha un specie di DBMS semplificato, in aggiunta ha però delle funzioni che permettono la gestione delle tabelle e dei dati che memorizza. MySQL è invece, un DBMS vero e proprio, pertanto di suo, funzioni come le Macro ACCESS non sono presenti, infatti questi sono problemi applicativi e in teoria dovrebbero essere risolti applicativamente. Quindi se hai un elenco di query da lanciare la miglior cosa sarebbe farla attraverso uno script (php,perl,ruby etc), scrivere una stored procedure mi sembra un pò troppo, però … diventa una tua scelta, se hai problemi con il linguaggio di scripting, posta pure magari ti diamo una mano. Saluti user:”algweb” |
|||
| 20 Luglio, 2009 15:10 | #3 | ||
|---|---|---|---|
|
Grazie per la risposta, in effetti per quanto riguarda la macro avevo capito che avrei dovuto impararmi un linguaggio di scripting, magari PHP…ma questo è il problema minore. Per quanto riguarda la migrazione dei db, come hai notato, la procedura non ti ha chiesto con che nome volevi importare il db da access e quindi le mie query fanno riferimento ad un db generale chiamato “access” e non AccessDataBase1 o AccessDataBase2 quindi o tutte le volte che eseguo la query cambio il db di riferimento oppure come posso fare? Grazie mille |
|||
| 20 Luglio, 2009 15:37 | #4 | ||
|---|---|---|---|
|
Ciao user:”davide.lauro” non ringraziare non è necessario. MySQL Migration Toolkit semplicemente crea un database con lo stesso nome del file Access, ad esempio Database.mdb diventa Database e così via. Nelle query tu fai riferimento al DB o alle sole tabelle? Postami una query così mi rendo meglio conto. Saluti user:”algweb” |
|||
| 20 Luglio, 2009 15:40 | #5 | ||
|---|---|---|---|
|
insert into edificio (Codice_istat,Cod_ty_unita,Cod_ty_edilizia,Sottotetti,Cod_stato_cons,Cod_mat_finitura, Interventi,Giardino,Parco,Cortile,Cod_precisione,Mq,Ascensore,Vani_scala,Cod_qual_scala,Cod_ut_edificio,Fotografia, Tot_un_ecografica,Piani_monte,Piani_valle,Link,Data_ril,Data_modifica,C_combina,Feature_ID) select CODICE_ISTAT,TY_UNITA,TY_EDIL,SOTTOTETTI,STATO_CONSERVAZIONE,MAT_FINITURA,INTERVENTI,GIARDINO,PARCO,CORTILE, PRECISIONE,MQ,ASCENSORE,VANI_SCALA,QUAL_SCALA,UT_EDIFICIO,FOTOGRAFIA,TOT_UN_ECO,PIANI_MONTE,PIANI_VALLE,LINK,DATA_RIL, DATA_RIL,IF(IFNULL=0,’AC10100’,’AC10200’),IF(ID_EDIFICIO=0,IFNULL,IFNULL) from v01.EDIFICIO Questa è la query, come puoi vedere in fondo il from fa riferimento a quel “v01” che è il nome del mio db importato, ma importando un altro db il nome cambia in “v02” o altro. |
|||
| 20 Luglio, 2009 19:19 | #6 | ||
|---|---|---|---|
|
Ciao user:”davide.lauro”, Beh finalmente ho capito :-[. Effettivamente è un problema interessante la cui risposta sta nel fatto che, in MySQL, non si possono avere più database con lo stesso nome, per ovvi motivi; francamente le mie reminiscenze di Access sono un pò datate e al momento mi sfugge come gestiva questa situazione il sw di Microsoft. A questo punto la soluzione più comoda, consiste nello scorporare il problema in 2 blocchi cioè:
Anche se il mio consiglio rimane quello di scrivere una piccolissima applicazione che ti aiuti nel lanciare queste query. Se hai bisogno, conta pure su noi Saluti user:”algweb” |
|||
| 21 Luglio, 2009 06:40 | #7 | ||
|---|---|---|---|
|
La tua soluzione funzionerebbe se stessi lavorando con un unico db, ma il problema è che sto facendo un insert prendendo i dati dalle tabelle di “v01” alle tabelle di “collaudo” un altro db che ha le tabelle ed i nomi dei campi scritti uguali. Si rende quindi necessario specificare il nome del db altrimenti risultano ambigui i nomi delle tabelle. |
|||
| 21 Luglio, 2009 07:31 | #8 | ||
|---|---|---|---|
|
Ciao user:”davide.lauro”, Beh la mia soluzione è applicativamente orientata, dove fai prima la SELECT e poi la INSERT. Una curiosità, quando fai la “INSERT” non puoi fare allo stesso modo di come fai nella SELECT? mi spiego INSERT INTO NOME_DATABASE.NOME_TABELLA ….. SELECT CAMPI FROM NOME_DATABASE.NOME_TABELLA WHERE …. Se fai già così, vabbè, ma nella query che hai postato dopo la insert c’è solo il nome della tabella “insert into edificio” Che ne pensi ? Saluti user:”algweb” |
|||
Condividi su:
Loggati o Registrati per replicare