Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Export z Ms Access do Mysql = problemy
Forum PHP.pl > Forum > Bazy danych > MySQL
gucio_zg
Witam wszystkich.

Pracuję nad zleceniem. Muszę przejść coś w rodzaju rekrutacji.
Pracuję jednocześnie na dwóch systemach w tym na linuxie gdzie mam postawiony serwer www, mysql oraz phpmyadmin. Zadanie wydaje się banalne: przeniesienie bazy z Ms Access do mysql z dostępem przez php.
Mam problem z prawidłowym wyeksportowaniem tabel z access'a do csv, bo w ten sposób chcę przenieść dane z table do mysql.
Cały czas otrzymuję komunikat w phpmyadmin takiej treści:

"#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NR,Nazwisko,Imie,Firma,Kod pocztowy,Miasto,Adres,Państwo,Telefon,IDklienta' at line 1 "

Czy może ktoś mi wyjaśnić co jest nie tak jak trzeba?
Mchl
Jak robisz import przez CSV, to bez nagłówków.
gucio_zg
Export robię pod linuxem mdb-tools'em: sudo mdb-extract baza.mdb Customers > tabela.csv. Czy mogę prosić o pomoc w konstrukcji polecenia ewentualnie zaproponowanie alternatywnej metody exportu tabel z accessa ?
Mchl
Po prostu otwórz tak zrobiony plik csv i wywal z niego linijkę z nagłówkami.
gucio_zg
Niestety usunięcie nagłówków nic nie pomogło.
Czy jest jakiś sprawdzony sposób na export tabel z accessa ?
Mchl
Ja eksportuję bezpośrednio z Accessa do CSV. Potem przez phpMyAdmin Import

Tak nawiasem mówiąc, to w jaki sposób robisz ten import w phpMyAdmin?
gucio_zg
Niestety baza w Accessie jest w postaci aplikacji. Nie mam możliwości edycji z poziomu Accessa.
Mchl
Cytat(Mchl @ 9.12.2009, 19:40:26 ) *
Tak nawiasem mówiąc, to w jaki sposób robisz ten import w phpMyAdmin?
gucio_zg
nowa baza danych -> nowa tabela -> import (csv z funkcja load)
Mchl
I sprawdziłeś czy zgadza Ci się kodowanie i znaki specjalne?
gucio_zg
po pierwszej nieudanej próbie domyśliłem się że może chodzić o znaki.
ponowie swoje pytanie. Czy są jakieś inne sposoby na wyciągnięcie tabel z accessa ?
Mchl
Nie znam, ale jeżeli dostajesz poprawny plik CSV, to już dalej nie powinieneś mieć problemów. Wklej tutaj ze dwa-trzy pierwsze wiersze i definicję tabeli.

Przypomniało mi się. Możesz jeszcze przez ODBC próbować się łączyć.
gucio_zg
Po przemyśleniach doszedłem do jednego prostego ale to zaje... prostego wniosku. Muszę wyciągnąć samą tabele z access'a z prawidłowymi nazwami kolumn i dopiero importować dane.

Mam inny problem. Dodawanie do bazy mysql.

$add="INSERT INTO projekty ( `NR` , `Tytul` , `Data_rozpoczecia` , `Data_zakonczenia` , `Komentarz` , `szczegoly` )
VALUES (
'$_POST[NR]', '$_POST[Tytul]', '$_POST[Data_rozpoczecia]', '$_POST[Data_zakonczenia]', '$_POST[Komentarz]', '$_POST[szczegoly]'
)";


Czy jest tu gdzieś jakiś błąd, że skubaniec nie dodaje wpisów? Usuwanie i edycja działają jak należy.

tiaaa zapomniałem o najważniejszym


$idzapytania = mysql_query($add);
Mchl
W zasadzie same błędy

  1. $add="INSERT INTO projekty ( `NR` , `Tytul` , `Data_rozpoczecia` , `Data_zakonczenia` , `Komentarz` , `szczegoly` )
  2. VALUES (
  3. '{$_POST['NR']}', '{$_POST['Tytul']}', '{$_POST['Data_rozpoczecia']}', '{$_POST['Data_zakonczenia']}', '{$_POST['Komentarz']}', '{$_POST['szczegoly']}')";


Nie mówiąc o tym, że trzeba by zmienne z $_POST najpierw dla bezpieczeństwa przepuścić przez mysql_real_escape_string
gucio_zg
Trafia mnie jasny szlag! Znalazłem programik MSA Query którym wyciagam wszystkie zapytania do bazy danych (funkcje przycisków):

Kod
SELECT `firma.NR`, `firma.Mod`, `firma.Typ`, `firma.Kol`, `firma.Nr VIN`, `firma.Dostawa`, `firma.Wpłaty suma`, `firma.Wydanie 1`, `firma.Wydano`, `firma.Zal`, `firma.Wpłaty`, `firma.Cena kl`, `firma.Nr fak`, `firma.Cena RP`, `firma.Korekta RP`, `firma.Nr fak RP`, `firma.Data kompozycji`, `firma.Nr kompozycji`, `firma.Data przelewu`, `firma.SEDRE`, `firma.Trafic`, `firma.Akcja`, `firma.Data 10`, `firma.Data 32`, `firma.Data 45`, `firma.Kto`, `firma.Opcje`, `firma.ORDRE`, `firma.Od`, `firma.T_P`, `firma.Nr umkli`, `firma.Data F`, `firma.K1`, `firma.K2`, `Customers.Nazwisko`
FROM Customers RIGHT JOIN `firma` ON `Customers.NR`=`firma.NR`
WHERE (((`firma.Kto`) Is Not Null) And ((`firma.Data F`)>=#7/1/2003#));


Tu jest jeden z kilkudziesięciu selectów. Cały czas phpmyadmin wyrzuca błąd #1064. Co w tym jest nie tak? Próbowałem też okroić zapytanie z funkcji, w których są polskie znaki. Ciągle to samo.
Mchl
http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

Ale an dobrzą sprawę nie widzę żadnych zarezerwowanych.
Gdzie dokłądnie się rzuca? (You have an error in your SQL syntax ... near questionmark.gif )
gucio_zg
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 30' at line 6
Mchl
No a gdzie w tym zapytaniu jest LIMIT? Chyba phpMyAdmin coś Ci dokłada do zapytania, bo domyślnie właśnie po 30 rzędów stronnicuje.
gucio_zg
odpowiedz phpmyadmin jest caly czas taka sama, bez względu czy dodam limit czy nie.
Mchl
No właśnie. Wychodzi an to, że phpMyAdmin coś Ci miesza. Spróbuj to samo zapytanie jakimś innym narzędziem wykonać.
Pilsener
Wysmol się na phpmyadmin i popatrz na programy typu Front czy Navicat, najlepiej takie, które obsługują wiele różnych baz danych i umożliwiają bezproblemowy transfer z jednej bazy do drugiej, dysponują także kreatorami importów z plików .csv, .xls czy .mdb

Jeśli chcesz robić to w PHP to polecam PDO, by połączyć się bezpośrednio z bazą accessową i pobrać dane:
  1. $dsn = "odbc:Driver={Driver do Microsoft Access (*.mdb)};Dbq=C:\\baza.mdb;Uid=Admin";
  2. $pdo = new PDO( $dsn );
  3. $sql = "select * from `WYNIKI` where `id`=8";
  4. $dane = $pdo->query($sql);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.