Konwertowanie bazy danych

(Patrol) #1

Witam!

Mam taki problem, otóż napisałem skrypt do mojej strony. Niestety skrypty mają różne bazy. np. jeden ma kolumne login, a drugi username. Jak przenieść rekordy do nowej bazy danych?

(adpawl) #2

Zakładając że do baz masz dostęp przez PHP My Admina, z jego poziomu eksportujesz do pliku .sql strukturę i dane.

Następnie edytujesz plik i zmieniasz w nim nazwy kolumn …po czym importujesz dane z tego pliku do bazy docelowej.

(Patrol) #3

Tylko w starym skrypcie kolejność kolumn to np. id, nick, email,password a w nowym to id,username,password,email …

(adpawl) #4

Kolejność kolumn nie ma znaczenia…

Kolejność ma znaczenie tutaj tylko przy wprowadzaniu do bazy danych przez INSERT INTO.

…przykład:

-- 

-- Struktura tabeli dla `auth`

-- 


CREATE TABLE `auth` (

  `user_id` char(11) NOT NULL default '0',

  `login` varchar(25) NOT NULL default '',

  `pass` varchar(32) NOT NULL default '',

  `data` date NOT NULL,

  `stat` char(1) NOT NULL default '0',

  PRIMARY KEY (`user_id`)

) ENGINE=MyISAM;


-- 

-- Zrzut danych tabeli `auth`

-- 


INSERT INTO `auth` (`user_id`, `login`, `pass`, `data`, `stat`) VALUES 

('47305023007', 'root', '458862695661d6ab517d4f7d979c4417', '2007-03-21', '0'),

('74612311818', 'user', '8ba6d7e11fdfd360abfcac32282027f2', '2007-03-21', '0');


-- --------------------------------------------------------

Jeżeli docelowo struktura ma wyglądać tak samo a różnica będzie tylko w nazewnictwie to zmieniasz tylko nazwy tabel/kolumn:

-- 

-- Struktura tabeli dla `autoryzacja`

-- 


CREATE TABLE `autoryzacja` (

  `id` char(11) NOT NULL default '0',

  `username` varchar(25) NOT NULL default '',

  `password` varchar(32) NOT NULL default '',

  `add_time` date NOT NULL,

  `status` char(1) NOT NULL default '0',

  PRIMARY KEY (`user_id`)

) ENGINE=MyISAM;


-- 

-- Zrzut danych tabeli `autoryzacja`

-- 


INSERT INTO `autoryzacja` (`id`, `username`, `password`, `add_time`, `status`) VALUES 

('47305023007', 'root', '458862695661d6ab517d4f7d979c4417', '2007-03-21', '0'),

('74612311818', 'user', '8ba6d7e11fdfd360abfcac32282027f2', '2007-03-21', '0');


-- --------------------------------------------------------

Ważne tylko by nazwy kolumn w CREATE TABELE i INSERT INTO były identyczne, oraz by w INSERT INTO kolejność danych odpowiadała kolejności kolumn (inaczej, by typy wprowadzanych danych odpowiadały typom kolumn)

Zatem kolejność tabel w CREATE TABELE jest dowolna, tylko w INSERCIE przy zmianie kolejności trzeba uważać.

Mam nadzeieję, że rozumiesz o co chodzi :wink:

(Patrol) #5

No trzeba :D, ale nadal nie wiem jak zrobić to co chciałem.