Recuperare dati da una tabella e passarli ad un altra

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio
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
 
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
 
#1062 - Duplicate entry 'Codice' for key 'PRIMARY' nella query scritta da ciric
mentre quella di holiday soft non funziona proprio...
 
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
 
#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
 
allora cambiala con una presente anche nell'originale
 
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 = "[email protected]";
//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>
 
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????
 
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???
 
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
 
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:

Discussioni simili