Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak ignorować ID przy imporcie do MySQL, Pod czas importu rekordów dostaje komunikat o "duplikate entry for
br-design.pl
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 1
Dołączył: 30.05.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


mam taki problem, wyeksportowałem dane przez phpmyadmina z jednej tabeli i chce je wstawić do tej samej tabeli w innej bazie, problem w tym że ta baza ma już rekordy i przy imporcie dostaje błąd że pokrywają się klucze ID. Co mogę zrobić aby mysql ignorował podane mu wartosci id i nadal importowanych rekordą swoje klucze.

wiem że są takie opcje jak ignore i replace, ale nie o to mi chodzi, nie chce podmieniać rekordów ani ich ignorować, chce po prostu dostawić nowe.
Go to the top of the page
+Quote Post
webdice
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Napisz sobie mały skrypt który pozmienia ID na wartość NULL.

  1. INSERT INTO `table` VALUES (1, ...);
  2. INSERT INTO `table` VALUES (2, ...);


na

  1. INSERT INTO `table` VALUES (NULL, ...);
  2. INSERT INTO `table` VALUES (NULL, ...);
Go to the top of the page
+Quote Post
br-design.pl
post
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 1
Dołączył: 30.05.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Dzięks! Ale sam phpmyadmin nie ma jakiejś magicznej opcji która to robi?
Go to the top of the page
+Quote Post
webdice
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Z tego co wiem to nie ma. Być może są narzędzia do tego, ale na pewno zrobisz to szybciej po mojemu, niż coś znajdziesz.
Go to the top of the page
+Quote Post
osiris
post
Post #5





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

Ostrzeżenie: (0%)
-----


Witam,

t1 - tabela do ktorej chcesz dodac rekordy
1. Stworz tabele tymczasowa o takiej samej strukturze jak t1
1. Zaimportuj do tymczasowej tabeli wyeksportowane dane.
2. SET @i = (SELECT MAX(id) FROM t1);
3. UPDATE tymczasowa SET id = @i := @i+1;
4. INSERT INTO t1 (SELECT * FROM tymczasowa)
5. usun tymczasowa.

Pozdrawiam

Ten post edytował osiris 7.04.2008, 19:33:35
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.09.2025 - 00:47