Recuperare dati da una tabella e passarli ad un altra

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
con la sintassi che hai usato tu diventerebbe cosi
Codice:
INSERT INTO articoli (
SELECT '[Codice Articolo]','CodiceInterno','Fornitore','Codice','Descrizione','Reparto',' [Sotto Reparto]','[Codice a Barre]','UM','[Listino Fornitore]','IVA','Acquisto','[Acquisto non ivato]','Vendita','[Vendita non ivato]' FROM test_prefixMagazzino
)
Le parentesi tonde che hai messo dentro la select non ci vanno
 

HolidaySoft.it

Utente Attivo
16 Ott 2012
106
1
0
Milano
www.holidaysoft.it
Prova così:

Codice:
INSERT INTO articoli('Codice Articolo',CodiceInterno, Fornitore,Codice,Descrizione,Reparto,'Sotto Reparto','Codice a Barre',UM,'Listino Fornitore',IVA,Acquisto,'Acquisto non ivato',Vendita,'Vendita non ivato') 
select 'Codice Articolo', CodiceInterno, Fornitore, Codice, Descrizione, Reparto, 'Sotto Reparto', 'Codice a Barre', UM, 'Listino Fornitore', IVA, Acquisto, 'Acquisto non ivato', Vendita, 'Vendita non ivato' from test_prefixMagazzino
Ciao
Mik
 

Emix

Utente Attivo
15 Feb 2010
594
0
16
#1062 - Duplicate entry 'Codice' for key 'PRIMARY' nella query scritta da ciric
mentre quella di holiday soft non funziona proprio...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
secondo me state girando attorno al problema.
per esperienza anche in locale dove non ci dovrebbero essere problemi di intasamenti di linee una semplice select
su 5 campi (solo select e visualizzazione) uno script per trattare quel numero di record impiega più di 30 secondi: quindi MUORE prima di aver finito

forse un po' ridondante e non elegantissmo lo script di emix andava più che bene (salvo detto il tempo di vita)
se il suo host gli permette di settare il tempo non dovrebbero esserci problemi.
altro metodo:
esporta la tabella di partenza
la importa in locale
in locale crea la tabella di arrivo
imposta il tempo di vita a quanto vuole
e trasferisce i dati
esporta la tabella di arrivo e la importa sul db remoto
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
#1062 - Duplicate entry 'Codice' for key 'PRIMARY' nella query scritta da ciric
mentre quella di holiday soft non funziona proprio...
anche le chiavbi primarie delle tabelle devono essere uguali

l'originale è cosi
Codice:
KEY `Codice` (`Codice`),
  KEY `Codice Articolo` (`Codice Articolo`),
  KEY `Codice a Barre` (`Codice a Barre`),
  KEY `Codice PLU` (`Codice PLU`),
  KEY `Descrizione` (`Descrizione`),
  KEY `Reparto` (`Reparto`)
l'articoli solo cosi
Codice:
PRIMARY KEY (`CodiceInterno`)
che tra l'altro nell'originale non c'è
aggiorna le chiavi alla tabella articoli e vedrai che in 1 secondo importi tutto
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
allora cambiala con una presente anche nell'originale
 

Emix

Utente Attivo
15 Feb 2010
594
0
16
sto provando in locale... ho importato la tabella di 3200 record... ho rifatto la mia mettendoci i campi che mi occorrono... Ho settato la vit dello script a 240 come mi ha detto borgo... Ho messo un echo alla fine per vedere se andava fino alla fine... Mi dice tutto ok ma se vado nel DB non trovo nulla... Posto l'intero script.. tanto è in locale...

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>

<body>
 <?php
 set_time_limit(240);
 //definisco i parametri della connessione: nomeserver,username,password e nome db
$server="127.0.0.1";
$username="root";
$password="";
$db="gestionale";
$admin_email = "supporto@oasipc.it";
//mi connetto al server mysql
$conn = mysql_connect($server,$username,$password) or die (mysql_error());
$sel = mysql_select_db($db) or die (mysql_error());
//mi connetto al database specificato nella variabile $nomedb
//dati di connessione
$q_1=mysql_query("SELECT * FROM test_prefixMagazzino ORDER BY codice");
while($riga=mysql_fetch_array($q_1)){
    //qui estrai i campi che vuoi passare a articoli (mi limito a due)
    $campo_1=$riga['Codice Articolo'];
    $campo_2=$riga['CodiceInterno'];
	$campo_3=$riga['Fornitore'];
	$campo_4=$riga['Codice'];
	$campo_5=$riga['Descrizione'];
	$campo_6=$riga['Reparto'];
	$campo_7=$riga['Sotto Reparto'];
	$campo_8=$riga['Codice a Barre'];
	$campo_9=$riga['UM'];
	$campo_10=$riga['Listino Fornitore'];
	$campo_11=$riga['IVA'];
	$campo_12=$riga['Acquisto'];
	$campo_13=$riga['Acquisto non ivato'];
	$campo_14=$riga['Vendita'];
	$campo_15=$riga['Vendita non ivato'];
    //e fai l'insert
    $q_2 = mysql_query("INSERT INTO articoli(Codice Articolo,CodiceInterno,Fornitore,Codice,Descrizione,Reparto,Sotto Reparto,Codice a Barre,UM,Listino Fornitore,IVA,Acquisto,Acquisto non ivato,Vendita,Vendita non ivato) VALUES('$campo_1','$campo_2','$campo_3','$campo_4','$campo_5','$campo_6','$campo_7','$campo_8','$campo_9','$campo_10','$campo_11','$campo_12','$campo_13','$campo_14','$campo_15')");
}
echo "tutto ok ";
//....
?> 
</body>
</html>
 

Emix

Utente Attivo
15 Feb 2010
594
0
16
fatemi capire.... la cosa era talmente tanto facile che anche a me risulta cosi strana?

Cioè io PER PURO CASO ho eliminato i campi che non mi servivano e come per magia ho il DB come mi occorreva??? Ho fatto anche export e import e c'è tutto ...

è cosi semplice????
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
cioa
se non ho capito male quello che hai fatto, mi spiace di non averci pensato, credevo che tu volessi mantenere entrambe le tabelle
 

Emix

Utente Attivo
15 Feb 2010
594
0
16
no credo di essermi sbagliato io alla fine a spiegarmi..
Cerco di spiegarmi...

Il database di partenda è in MDB ossia access...
Con un tools free ho convertito da mdb a SQL...
Da li avevo una tabella con circa 110 campi, ma di questi 110 a me ne servivano circa 15...
Ho ricreato la tabella con i 15 campi che mi servivano e spero di riuscire, con php, a inserire i vecchi record in questa nuova tabella... Inserendo praticamente solo i 15 campi da me utilizzati...
La difficoltà poi è nata dal fatto che non si riusciva a venirne a capo in questa maniera...
Per curiosità prima, giocando con phpmyadmin ho provato a eliminare i campi inutili dalla tabella importanta con i record inseriti.. ed ecco fatto che come per magia mi ritrovo la tabella con un nome che non mi serve ma con i 15 campi e i relativi record all'interno O_O
Ho fatto un export al volo, rinominato la tabella come mi serviva e importata ex novo.. et voilà ho ottenuto ciò che mi occorreva..
è possibile che sia riuscito facendo in questa maniera???
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
si era quello che avevo capito, invece di fare il trasferimento con ph hai modificato la tabella e con import/export hai ottenuto quello che volevi
 

Paolo Mass

Nuovo Utente
18 Dic 2015
3
0
0
Salve,
ho trovato questa discussione che mi interessa molto in quanto ho lo stesso problema dovendo spostare dati da una tabella ad un'altra.
Ecco il codice (quello del Super Moderatore):

PHP:
$q_1 = mysql_query("SELECT * FROM archivio_soci ORDER BY id ");

[u]while($riga=mysql_fetch_array($q_1))[/u] {

// recupero i valori e li assegno alle variabili $name e $address
$tessera1 = $riga['tessera1'];
$cognomesocio1 = $riga['cognomesocio1'];
$nomesocio1 = $riga['nomesocio1'];
$pm1 = $riga['pm1'];
$cognomesocio2 = $riga['cognomesocio2'];
$nomesocio2 = $riga['nomesocio2'];
$pm2 = $riga['pm2'];
$telefono1 = $riga['telefono1'];
$cellulare1 = $riga['cellulare1'];

$q_2 = mysql_query ("INSERT INTO partecipanti_carrara (tessera1, cognomesocio1, nomesocio1, pm1, cognomesocio2, nomesocio2, pm2, telefono1, cellulare1) 
VALUES ('$tessera1','$cognomesocio1','$nomesocio1','$pm1','$cognomesocio2','$nomesocio2','$pm2','$telefono1','$cellulare1')");

}
//
?>
L'errore è il seguente:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\tcc\cercodato_socio2.php on line 81

La riga interessata dall'errore è quella sottolineata.
Grazie!
 
Ultima modifica di un moderatore: