Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Import naprawde duzej bazy csv, ...i zabawa z kodowaniem
kiler129
post 23.09.2008, 18:16:22
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Siedze od rana i mecze sie z importem csv do mysql. Jest to wycinek 8GB bazy (wycinek ma 200MB a mniejszy wycinek 8 rekordow).
Nie mam problemu z samym importem co z kodowaniem i jego predkoscia.
Przez 2h udalo sie poleceniu:

Kod
LOAD DATA LOCAL INFILE 'plik z baza' IGNORE INTO TABLE `tabela` FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n';


zaimportowac nieco ponad 1mln rekordow (~50MB).
Drugi problem ktory testuje z wycinkiem 8 rekordowym to kodowanie.
Plik pierwotnie w kodowaniu cp1250, po obrobce iconv z konsoli linux jest w utf8 co nadal nie pomaga dry.gif
Po imporcie za pomoca w/w komedy phpmyadmin nadal pokazuje krzaki. Kolumne w ktorej sa polskie znaki ustawialem juz roznie, na utf_unicode, utf_general i cp1250_general - bez efektow.
Ma ktos jakikolwiek pomysl na w miare szybki import ktory nie pokrzaczy pliku?


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
Axexis
post 24.09.2008, 20:02:12
Post #2





Grupa: Zarejestrowani
Postów: 98
Pomógł: 14
Dołączył: 13.01.2008
Skąd: Birmingham

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


Witaj,

Zakładam, że kodowanie Ci krzaczy na poziomie skryptu. Z mojej strony proponuję Ci, abyś przekonwertował bazę na utf8-generalci i następnie zaraz po nawiązaniu połączenia z bazą danych wstukał:
  1. <?php
  2. mysql_query("SET NAMES utf8");
  3. ?>


Oczywiście, wyjście (czyt: cała strona) musi być w utf8 aby poszło.


--------------------
  1. root@php.pl:~# rm -fr /


be. confused
Go to the top of the page
+Quote Post
dr_bonzo
post 24.09.2008, 20:17:38
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Wylacz klucze/indeksy na czas importu.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
kiler129
post 24.09.2008, 21:02:16
Post #4





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Cytat(Axexis @ 24.09.2008, 21:02:12 ) *
Witaj,

Zakładam, że kodowanie Ci krzaczy na poziomie skryptu. Z mojej strony proponuję Ci, abyś przekonwertował bazę na utf8-generalci i następnie zaraz po nawiązaniu połączenia z bazą danych wstukał:
  1. <?php
  2. mysql_query("SET NAMES utf8");
  3. ?>


Oczywiście, wyjście (czyt: cała strona) musi być w utf8 aby poszło.


W zasadzie nie wiem gdzie, sprawdzam w pma.
Btw. jaka roznica miedzy general_ci a unicode_ci?

Cytat(dr_bonzo @ 24.09.2008, 21:17:38 ) *
Wylacz klucze/indeksy na czas importu.

A mozesz rozwinac?


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
dr_bonzo
post 24.09.2008, 21:18:11
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


FOREIGN_KEY_CHECKS=0


i usun wszystkie indexy, a po imporcie je utworz na nowo


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:18