2011-01-19 4 views
16

voglio scaricare record singolo del tavolo mysql nominato come table1 per id = 5.script per eseguire il dump del record singolo del tavolo in MySQL

Qual è mysql query per lo stesso?

Penso che possiamo usare mysqldump ma l'ho usato con i record completi di tabella. Ma come usarlo con un singolo record?

+0

È necessario il file .sql del record singolo, giusto? –

+0

@ Shakti Singh: sì giusto –

+0

Se il campo 'id' è la chiave primaria non è necessario limitare il risultato (come ha fatto Rana). Forse dovresti leggere alcuni tutorial su SQL, come ad esempio: http://www.itechcollege.com/courses/SQL/02-Select-Data.php – Tony

risposta

24

se controlli a http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html troverete --where opzione, che è quello che vi serve.

Seguono quanto affermato dal fatto riferimento:

--where='where_condition', -w 'where_condition' 

ribaltabile solo le righe selezionate dal data condizione WHERE. Le virgolette attorno alla condizione sono obbligatorie se contengono spazi o altri caratteri che sono speciali per il tuo interprete di comandi.

Esempi:

--where="user='jimf'" 
-w"userid>1" 
-w"userid<1" 
+1

Probabilmente vuoi specificare la tabella nome: mysqldump -uroot -p databasename tablename -w "id = 'value'"; –

-4

Utilizzare questa query "SELECT * FROM table1 WHERE id = '5' LIMIT 1". Dovrebbe funzionare bene.

+0

Voglio ottenere una riga da una tabella e inserirla in un'altra tabella di un altro db . Quindi questo non funzionerebbe solo –

+0

Se le tabelle hanno la stessa struttura, quindi usa semplicemente "INSERT INTO table2 (the_select_query)". Se vuoi colonne specifiche, quindi menzionarle mentre selezioni e utilizzi "INSERT INTO table2 (column1, column2) VALUES (the_specific_slect_query)" – Rana

-2

Prova

INSERT INTO table2 (SELECT * FROM table1 WHERE id = 5); 
+1

non funzionerà, vorrebbe aggiungere record in un altro database –

0

Anche se il sottostante non funzionerà per un nuovo database/diverso

Prova

INSERT INTO Table2 (SELECT * FROM tabella1 WHERE id = 5);

Tutto ciò che si deve fare se l'inserimento tra i database sullo stesso server è:

INSERT INTO `newdbname`.`table2` (SELECT * FROM `olddbname`.`table1` WHERE id = 5); 

In realtà, se non mi sbaglio si può anche inserire selezionare tra i database su server diversi in mysql da aggiungendo il nome del server infront di ogni nome di database e la tabella come segue:

INSERT INTO `localhost`.`newdbname`.`table2` (SELECT * FROM `accessible-live-server-name`.`olddbname`.`table1` WHERE id = 5); 
0

insert into [dbo].[LocaleStringResource] 
    (LanguageId,ResourceName,ResourceValue) 
select 5 as LanguageId, ResourceName, ResourceValue 
from [dbo].[LocaleStringResource] 
where LanguageId = 2 and id = (
    SELECT MAX(ID) 
    FROM [dbo].[LocaleStringResource] 
)