Skocz do zawartości

Jak zaimportować tekst do MySQL


Ralliart

Recommended Posts

Jeżeli trafiliście na ten wątek to pewnie ogarnia was lekka desperacja, bo nigdzie w sieci nie możecie znaleźć porządnego narzędzia do wykonania tak banalnej czynności. Tyle, że nie mówię tu o tekście sformatowanym w którym są znaki umożliwiające rozdzielenie kolumn, wierszy, żadnych plikach csv - przykładów tego typu jest masa w sieci i szczerze mówiąc w ogóle nie rozwiązują problemów. Piszę o setkach tysięcy linii pisanych jednym ciągiem bez racjonalnych metod kontroli tego co będzie w następnym wierszu.

Otóż bardzo odkrywczo powiem :MySQL jest biedny do bólu w takim wypadku

Nie zaimportujecie takiego tekstu do tej bazy danych wprost. Część z was krzyknie pewnie: ok jeden skrypt i po sprawie! Jesteście moi drodzy w bardzo głębokim błędzie, bo rzeczona baza danych nie posiada wbudowanych narzędzi do importu takich rzeczy. A perla nie chce mi się uczyć specjalnie do napisania procedury do importu dwóch plików. I tu rodzi się problem który rozwiązywałem ostatnio: Excel to potrafi, Access też, więc z jakiego powodu MySQL nie? Problem dosyć istotny w przypadku posiadania takiego pliku z danymi bazodanowymi i próbami dojścia z nimi do ładu i składu w celu dalszej obróbki, tym bardziej jeżeli trzeba go wczytać co 5 minut, a zakres wierszy to 0- 200 000.

Oczywiście możecie sobie poradzić, ale jak? Pozostaje odpowiedni program - tyle, że nie ma żadnego darmowego który posiadałby potrzebne funkcje, więc na łatwiznę nie liczcie. Na dodatek jedyny który odpowiada moim wymaganiom: Navicat nie potrafi zrobić tego dobrze, bo jeżeli w pierwszych kilku wierszach nie ma maksymalnego ciągu znaków dla zapisanej procedury importu to po prostu je pomija.... i wpisuje do bazy dane z 8 kolumn zamiast 16.... i to za jedyne 170$... nosz k***wa

Jedynym sensownym rozwiązaniem jest w tym wypadku wykorzystanie Accessa i jego funkcji tabele połączone - tym razem M$ pokazuje kto tu rządzi, bo zawsze importuje dane do 16 pól w bazie danych i nie marudzi w ogóle. Tym samym mam zapisany scheduler w Navicacie, który przez Accessa importuje z niego de facto sformatowaną tabelę.... nie ma to jak optymalizacja i usuwanie słabych ogniw...

+ dla Accessa

- dla MySQL

EDIT:

Byłbym zapomniał: Import w ten sposób ma jedną zaje****tą wadę. Jeżeli w kolumnach macie pozycje zawierające znaki typu ' lub " to nie rozczarujcie się, kiedy w waszej bazie MySQL nie da się tego zapisać - pozycje zostaną zwyczajnie pominięte, bo zawierają niedozwolone znaki (znaczniki). Spróbujcie wpisać do bazy Telewizor 25" - sama przyjemność, nieprawdaż? Wk***ia tym bardziej, że przy imporcie z ODBC problemu nie ma - ot taka mała niespodzianka.

Odnośnik do komentarza
Udostępnij na stronach

Gość
Ten temat jest zamknięty i nie można dodawać odpowiedzi.
×
×
  • Dodaj nową pozycję...