Konwertowanie formatu danych całej bazy/tablicy - Serwery dedykowane LINUX
Mouser Electronics Poland   Przedstawicielstwo Handlowe Paweł Rutkowski   Amper.pl sp. z o.o.  

Energetyka, Automatyka przemysłowa, Elektrotechnika

Dodaj firmę Ogłoszenia Poleć znajomemu Dodaj artykuł Newsletter RSS
strona główna GRUPY Serwery dedykowane LINUX Konwertowanie formatu danych całej bazy/tablicy
REKLAMA
REKLAMA

Konwertowanie formatu danych całej bazy/tablicy

Awatar użytkownika
Artur Kulikowski

Witam, problem (a może brak wiedzy) mam taki, że korzystam z bazy MYSQL gdzie dane wstępnie były przechowywane w innym formacie niż utf-8, który obecnie jest docelowym formatem. Piszę ogólnie aby stworzyć kompleksowe rozwiązanie.

ostatnio podczas łączenia z bazą zacząłem wysyłać również komendę
SET NAMES UTF8
i efekt jest taki że wszystkie dane z tabel czyta jak utf-8 i wszystkie krzaczki odpowiadające literom w innym kodowaniu pojawiają się jako krzaczki i np
Gdańsk=Gdańsk
szczerze bez tej dodatkowej komendy we front-endzie wyświetlane wszystko jest "po polsku" natomiast w bazie wygląda jak podałem. Dodając komendę nowe wpisy zapisuje poprawnie w bazie i również wyświetla poprawnie tylko nie chce mi się poprawiać ręcznie około 500 rekordów w CRM-ie.

pomysł mam taki żeby wczytywać całą tabelę po kolei bez "set names utf8" a następnie update zrobić każdego rekordu już używając tego ale jestem prawie pewien że są prostsze sposoby. Kumpel google nic konkretnego mi jeszcze nie powiedział.

cytuj pomógł zgłoś nadużycie
Brak awataru
Grzegorz Kraszewski

A po co poprawiać ręcznie? Można przecież napisać skrypt w PHP. Korzystając z konstrukcji CONVERT() USING można mieć całą pracę wykonaną w kilka minut.

cytuj pomógł zgłoś nadużycie
Awatar użytkownika
Artur Kulikowski

Szczerze mówiąc to lenistwo zdecydowało o tym że szukałem funkcji SQL a nie php ale chyba wrócę do tematu ;)

cytuj pomógł zgłoś nadużycie
Brak awataru
Grzegorz Kraszewski
Artur Kulikowski
 

Szczerze mówiąc to lenistwo zdecydowało o tym że szukałem funkcji SQL

funkcja CONVERT([USING]) jest funkcją SQL. MySQL w każdym razie.

cytuj pomógł zgłoś nadużycie
Awatar użytkownika
Artur Kulikowski

Z tą funkcją byłoby wszystko ok, - doszukałem się w manualu, ale nie wiedziałem jak wygląda znacznik type dla kodowania użytego w treści

Wykombinowałem coś  takiego, co też działa ale drugą tablicę przekonwertować chcę komendą CONVERT - ambicjonalnie ;)

pierwszą przekonwertowałem tak:

 

<?php

include 'db_connect.php';//łącze bez ustawiania kodowania

$zap="select * from tablica where id >56";

//nazwy pól i tblicy uproszczone do celów prezentacji

$wykonaj = mysql_query($zap);

while ($wynik=mysql_fetch_object($wykonaj)){

$zap2="update tablica set pole1='$wynik->pole1',pole2='$wynik->pole2',pole3='2' where id =$wynik->id ";

mysql_query('set names utf8'); //zmiana kodowania z domyślnego na utf8

$wykonaj2 = mysql_query($zap2);

}

?>

może mała podpowiedź co do pola type? - muszę doczytać o tym convert() bo pierwsze próby okazały nieskuteczne

cytuj pomógł zgłoś nadużycie
odpowiedz
REKLAMA
Nasze serwisy:
elektrykapradnietyka.com
przegladelektryczny.pl
rynekelektroniki.pl
automatykairobotyka.pl
budowainfo.pl