Losowe tech wywody
19 lutego
Jest to prosty skrypt, który pozwala na import danych csv do bazy danych. Funkcja może być przydatna, ponieważ możesz go edytować w odpowiednie pola, przesłać go wraz z pliku csv i połączenie go z sieci i będzie się resztą.
To pozwala określić ogranicznik w tym pliku csv, czy jest to śpiączka, itp. kartę Pozwala także do wyboru separatora linii, pozwala na zapisywanie wyników w pliku (tzw. zrzut sql danych).
To również pozwala na to puste pole na początku każdego wiersza, który jest zazwyczaj autoinkrementacja cyfrowy klucz podstawowy.
Skrypt ten jest przydatny głównie jeśli nie masz phpmyadmin, lub nie chcesz kłopotów z logowaniem i wolą kilka kliknięć rozwiązanie, lub po prostu są w wierszu polecenia facet.
Wystarczy upewnić się, że tabela jest już utworzony przed próbuje zrzucić danych.
Prosimy opublikować komentarze, jeśli masz jakiekolwiek zgłoszenia błędu.
135 Odpowiedzi dla "skrypt PHP do importowania danych csv do mysql"
Bardzo przydatne, dziękuję.
Zwykle używam phpmyadmin, ale prawdziwe, w przypadku nie trzeba go zainstalować, i nie ma dostępu do shella (jak większość z udostępnionego dostawców hostingu), może to bardzo się przydają.
Dziękuję tym zapisywane dużo czasu! Nicea skryptu.
[...] Cóż, dziś chciałbym przedstawić Państwu inny sposób uzyskania pliku csv do sql, przy użyciu kodu PHP. Na ten fragment kodu, w pełni zasługa legendy. Musisz upewnić się, że baza danych jest już utworzony przed zrzutu daty. /************************************************* *******************************************/ / * kod na http: / / legend.ws / blog / porady-sztuczki / csv-php-mysql-import / / * Edit wpisy poniżej, aby odzwierciedlić odpowiednie wartości /****************** ************************************************** ************************/ $ databasehost = "localhost"; $ databasename = "test" $ databasetable = "sample" $ databaseusername = " test "; $ databasepassword =" "; $ fieldseparator =", "$ lineseparator =" n "$ csvfile =" bbqrest.csv "; /***************** ************************************************** *************************/ / * Czy chcesz dodać pole ampty na początku te rekordy? / * Jest to przydatne, jeśli masz tabelę z pierwszego pola jest auto_increment integer / * i pliku csv nie ma takich jak puste pole przed rekordy. / * Set 1 do 0 dla i tak nie. UWAGA: nie ustawiony na 1, jeśli nie jesteś pewien. / * To może zrzucić danych w niewłaściwym pola, jeśli dodatkowe pole nie istnieje w tabeli /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * Chcesz zapisać zapytania mysql w pliku? Jeśli tak ustawić $ zaoszczędzić do 1. / * Pozwolenie na plik powinien być ustawiony na 777. Albo przesłać przykładowy plik przez ftp i / * zmiany uprawnień lub wykonać w wierszu polecenia: touch output.sql & & chmod 777 output.sql /******************* ************************************************** ***********************/ $ zapisz = 1; $ plik_wyjściowy = "output.sql"; /*********** ************************************************** *******************************/ [...]
Witam, małe modyfikacje na auto wartości zwiększając w kolumnie 1 (pole id)
patrz zmienna $ count.
ola, enrico.
/ / $ Con = mysql_connect ($ databasehost, $ databaseusername, $ databasepassword) or die (mysql_error ());
/ / @ Mysql_select_db ($ databasename) or die (mysql_error ());
$ Lines = 0;
$ Pytania = "";
$ Linearray = array ();
$ Licznik = 0;
foreach (split ($ lineseparator, $ csvcontent) as $ line) {
$ Licznik = $ licznik + 1;
$ Lines + +;
$ Line = trim ($ line, "\ t");
$ Linia = str_replace ("'"," \ ", $ line);
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implode ("','",$ linearray);
$ Zapytanie = "INSERT INTO` tabeli db `VALUES ('$ count', '$ linemysql');";
$ $ Query .= zapytania. "\ N";
@ Mysql_query ($ query);
}
/ / @ Mysql_close ($ con);
[...] W podobny sposób, tutaj jest gotowych skryptów, że jej autor mówi, że będzie zaimportować plik CSV do MySQL: skrypt PHP do importowania danych csv do mysql. [...]
[...] /******************************************** ************************************************/ / * Kod na https://legend.ws/blog/tips-tricks/csv-php-mysql-import/ / * Edycja wpisy poniżej, aby odzwierciedlić odpowiednie wartości /************* ************************************************** *****************************/ $ databasehost = "localhost"; $ databasename = "xxxxx" $ databasetable = "xxxx" ; $ databaseusername = "xxxx" $ databasepassword = "xxxx" $ fieldseparator = "," $ lineseparator = "n" $ csvfile = "xport/2008_BF.csv"; /********* ************************************************** *********************************/ / * Czy chcesz dodać pole ampty na początku tych zapisów ? / * Jest to przydatne, jeśli masz tabelę z pierwszego pola jest auto_increment integer / * i pliku csv nie ma takich jak puste pole przed rekordy. / * Set 1 do 0 dla i tak nie. UWAGA: nie ustawiony na 1, jeśli nie jesteś pewien. / * To może zrzucić danych w niewłaściwym pola, jeśli dodatkowe pole nie istnieje w tabeli /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * Chcesz zapisać zapytania mysql w pliku? Jeśli tak ustawić $ zaoszczędzić do 1. / * Pozwolenie na plik powinien być ustawiony na 777. Albo przesłać przykładowy plik przez ftp i / * zmiany uprawnień lub wykonać w wierszu polecenia: touch output.sql & & chmod 777 output.sql /******************* ************************************************** ***********************/ $ zapisz = 1; $ plik_wyjściowy = "output.sql"; /*********** ************************************************** *******************************/ [...]
Wow jest cool ... miał pomysł po przeczytaniu Twojego kodowania ... dziękuję bardzo
Wszystkich początkujących - rozdzierające moje włosy próbuje zaimportować Excel csv do phpMyAdmin (na komputerze Mac). Czy miłość dokładnie wiedzieć, gdzie i co mam z tym zrobić skrypt php ...?
Steve,
Można by umieścić skrypt w folderze dostępna przez internet, po zmianie zmiennych, które należy zmienić. Przeczytaj komentarze w skrypcie, aby dowiedzieć się, co trzeba określić. Następnie wywołać skrypt w przeglądarce internetowej, takich jak:
https://www.example.com/path-to-script/simplescvimport.php
byłby to dobry pomysł, aby dodać zapobiec nagłówki w csv od składane są do bazy danych. Lub utworzyć skrypt, który wyciąga pierwszy wiersz i tworzy db przy pomocy tych wartości jako nazwy kolumn.
Otrzymuję ten błąd Plik nie został znaleziony. Upewnij się, że określone poprawną ścieżkę.
Czy ktoś szybko odpowiedzieć mam bbqrest.csv csv na właściwą ścieżkę (root) ..
Rengaraj,
csv powinny być w tym samym miejscu co plik PHP.
Ponadto, tak naprawdę nie muszą używać tej samej nazwy pliku csv.
bbqrest.csv przykład, zastąpić nazwę pliku z własnymi.
Nie uwzględnia takich dziedzinach, jak ten wiersz:
Fname, lname, "Company, Inc", miasto, województwo, kod
Firma i Inc dostać podzielone na dwie kolumny.
Cóż, tutaj poprawka do mojego poprzedniego komentarza:
wstawić to między:
$ Linearray = explode ($ fieldseparator, $ line);
... Wstawić fragment kodu poniżej ....
$ Linemysql = implode ("','",$ linearray);
Znajduje i zachowuje wszystkie "Rzeczy, więcej rzeczy" razem przed implozją go.
$ A = "";
$ B = "";
$ Qoutecount = 0;
for ($ x = 0; $ x -1) {
$ Qoutecount + +;
if ($ qoutecount == 1)
$ A = $ x; / / przechowujemy pierwszej instancji
elseif ($ qoutecount == 2) {
$ Quotecount = 0;
$ B = $ x; / / przechowujemy drugiej instancji
/ /, ŻE TO ... skompilować wszystkie elementy z $ a $ b do $ a i ignorować elementów niczego po $ a $ b w nowej tablicy;
$ Newa = "" / / zainicjować nowy ciąg znaków.
for ($ z = $ a; $ z $ a & & $ y
)
/ / Pominąć, ponieważ mieści się on w złych elementów tablicy
więcej
$ Newarray [$ y] = str_replace ('"',",$ linearray [$ y]);
$ Linearray = array_values ($ newarray) / / przywrócić klucze do nowej tablicy
$ X + +;
}
}
}
i zdobyć pierwszy tak dużo, odcięty, a reszta po prostu kod w przeglądarce. Wiem, że php działa, ponieważ reszta terenie zakładu.
Zrobiłem upgrade do php5 to obchodziło?
brad, jeśli ktoś pobrał go wcześniej niż w zeszłym tygodniu, zastąpić "<?" u góry "<? php" (usuń przestrzeni)
Robbie, dzięki dla was więcej, to całkiem mile widziane. Niestety, nie działa od razu, kiedy go skopiować. Myślę, że czegoś brakuje, ponieważ kod jest rozłożone na dwa etaty.
Czy możesz sprawdzić kod wyświetlany tutaj? Czy czegoś brakuje?
Witam, miło dzięki skryptu. Podczas uruchamiania go uzyskać:
Fatal error: maksymalny czas realizacji 30 sekund przekroczony on line 63
Czy jest coś mogę zrobić, aby to obejść?
Jak duży jest plik, który próbujesz zaimportować?
w każdym przypadku, spróbuj dodać następujący wiersz po początkowym otwierających tagów:
set_time_limit (300);
W ten sposób skrypt do 5 minut (300 sekund) w czasie wykonywania.
Wymiana 300 z 0 pozwolą jej wziąć tyle czasu, ile potrzeba.
Witam wszystkich,
Zrobiłem drobne zmiany w kodzie, więc działa jako importer CSV, jak powinny.
CSV-s w pierwszym wierszu powinien posiadać nazwy kolumn, które chcesz zaimportować, więc zmienić pętli foreach:
foreach (split ($ lineseparator, $ csvcontent) as $ line) {
$ Lines + +;
$ Line = trim ($ line, "\ t");
$ Linia = str_replace ("\ r linii ","",$);
/ * Pobierz nazwy kolumn z pierwszej linii CSV * /
if ($ wiersze == 1) {
$ Kolumny = explode ($ fieldseparator, $ line);
$ Columnsql = implode (",",$ kolumny);
echo $ columnsql;
nadal;
}
/************************************
Ta linia ucieka znak specjalny. usunąć, jeśli wpisy są już uciekł w pliku csv
************************************/
$ Linia = str_replace ("'"," \ ", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implode ("','",$ linearray);
if ($ addauto)
$ Zapytanie = "INSERT INTO $ databasetable ($ columnsql) values ('$ linemysql');";
więcej
$ Zapytanie = "INSERT INTO $ databasetable ($ columnsql) values ('$ linemysql');";
$ $ Query .= zapytania. "\ N";
@ Mysql_query ($ query);
}
Nicea szef pracy
nie wstawić do tabeli bazy danych, gdzie chcę go dodaje ..: (
Mogę tylko już pierwszy wers mojego pliku CSV być importowane do bazy danych.
Oto kopia pliku dziennika:
wstawić do wartości produkcji (", '2008-10-21 ', '50', '50 ', '50', 'to jest w pierwszej linii notatki", "jest to zauważa, linia 2", "jest to linia uwagi 3 , '0000-00-00 ', '0000-00-00', '0000-00-00 ', '456 Morningside Ave "," ste. 512 "," Brooklyn "," Nowy Jork ", '10023', "Joe", "Klient nr 1");
wstawić do wartości produkcji (", '2008-10-09 ', '50', '50 ', '50', 'to jest w pierwszej linii notatki',",",' 09.10.2008', '2008 -10-14 ', '0000-00-00', '456 Morningside Ave "," Ste 512 "," Brooklyn "," Nowy Jork ", '10023 ',' Joe ',' klienta 1. ');
wstawić do wartości produkcji (", '2008-10-14 ', '25', '25 ', '25', 'UWAGI 1',",",' 14.10.2008', '2008-10-17 ',' NULL ', '555 gdzieś "," apartament 123 "," New York "," nowy y', '10001 ',' Joe ',' Nazwa 1 ');
wstawić do produkcji
wstawić do produkcji
wstawić do wartości produkcji (", '2008-10-17 ', '50', '50 ', '50', 'to jest w pierwszej linii notatki',",",' 03.10.2008", 0000 -00-00 ', '0000-00-00', '456 Morningside Ave "," Ste 512 "," Brooklyn "," Nowy Jork ", '10023 ',' Joe ',' klienta 1. ');
wstawić do wartości produkcji (", '2008-10-18 ', '25', '25 ', '25', 'UWAGI 1',",",' 04.10.2008, '0000-00-00 , '0000-00-00 ', '555 gdzieś "," apartament 123 "," New York "," nowy y', '10001 ',' Joe ',' Nazwa 1 ');
wstawić do produkcji
wstawić do wartości produkcji (", '2008-10-20 ', '34', '34 ', '34', 'nowe notatki',",",' 06.10.2008, '0000-00-00 , '0000-00-00',",",",",",' Steve',");
wstawić do wartości produkcji (", '2008-10-21 ', '12', '12 ', '12', 'nawet nowsze notatki',",",' 07.10.2008, '0000-00- 00 ', '0000-00-00',",",",",",' znak',");
wstawić do produkcji
wstawić do produkcji
wstawić do produkcji
wstawić do produkcji
wstawić do wartości produkcji (", '2008-10-16 ', '0', '0 ', '0', 'jeszcze później',",",' 12.10.2008, '0000-00-00 , '0000-00-00',",",",",",",");
wstawić do wartości produkcji (", '2008-10-17 ', '0', '0 ', '0', 'jeszcze później',",",' 13.10.2008, '0000-00-00 , '0000-00-00',",",",",",");
wstawić do wartości produkcji (", '2008-10-18 ', '0', '0 ', '0', 'jeszcze później',",",' 14.10.2008, '0000-00-00 , '0000-00-00',",",",",",");
wstawić do produkcji
wstawić do wartości produkcji (", '2008-10-01 ', '34', '34 ', '34', 'najnowsze',",",' 02.10.2008', '2008-10-04 ', '2008-10-04',",",",",",' bruce');
wstawić do wartości produkcji (",");
To mówi, że wprowadzenie 20 rekordów, ale tylko pierwszy z nich sprawia, że do bazy danych. Wszelkie myśli?
Witam wszystkich,
Dzięki za skrypt. Jestem noobem w PHP i MySQL, tak naprawdę to doceniam czegoś takiego. Mam w miarę tworzenia "Plik nie jest zapisywalny, sprawdź uprawnienia" komunikat o błędzie w przeglądarce. Czy ktoś może wyjaśnić komentarz na temat ustawiania uprawnień do 777? Używam programu Excel wygenerowany. Csv? Z góry dziękuję.
Hi Mark,
pierwszy, to na myśli, że plik wybrany w $ plik_wyjściowy zmiennej.
po drugie, ten plik musi być dostępny do zapisu. Zakładam, że używasz Linuksa nie, okna, jak to generalnie nie jest to problem z systemem.
Na linux, po prostu SSH do maszyny, przejdź do katalogu, gdzie plik wyjściowy jest i wpisz: chmod 777 nazwa_pliku
gdzie "nazwa pliku" jest nazwa pliku.
Jeśli nie masz SSH, wiele klientów FTP zmienić wsparcia zgody. W tym celu, FTP do folderu zawierającego plik wyjściowy, a następnie wybierz ten plik i znajdź z tego ftp oprogramowania możliwość zmiany zezwolenia. Ustaw na 777, lub "do odczytu, zapisu, wykonywania" dla każdego.
Hey Everyone,
Miłość tego skryptu, i to działa dobrze, a teraz nagle skrypt zwyczaj wstawiania rekordów. Skrypt kończy, a nawet wyjść liczyć rekord, ale nie dotykaj bazy danych w ogóle ...
Jakieś pomysły?
Dzięki
C
Drodzy Chris,
należy wymienić:
@ Mysql_query ($ query);
z:
@ Mysql_query ($ query) or die (mysql_error ());
i daj mi znać co o błędach daje
W odniesieniu do kwestii ofert, można użyć tego:
$ Linearray = preg_split ("/,(?=(?:[^ \ "] * \" [^ \ "] * \ ")*(?![^ \"] * \ "))/", $ line );
Pozdrawiam,
Gaz.
mówi załadowania do bazy danych
ładowania danych lokalnych "PATH" plik_we w pola Stół zakończone "," linie zakończone przez '\ n';
i zmienić ścieżkę i stół jego wchodząc, ale daje mi błąd, że nieprawidłowy kod składni 1064
może ktoś dać mi doradzić, co robić
dzięki
stan
Hi Stanley, problem jest z apostrofów. Oprogramowanie blog tutaj przepisuje je. Wystarczy wymienić "i" z "
PS: powyższe polecenie jest bezpośrednio załadować pliku csv do bazy danych z mysql polecenia. To jest ładne, ale nie związane z powyższego skryptu
Witam wszystkich!
Wydaje się, że działa skrypt ... exept że nie zapisu danych do mysql ...
Podobnie jak Chris: Skrypt kończy, a nawet wyjść liczyć rekord, ale nie dotykaj bazy danych w ogóle ... ale mówi mi: Znaleziono łącznie 1 rekordów w pliku csv.
Co mam zrobić źle (im noob w php i mysql)
Dzięki
Claus
Witam wszystkich
Używam drupal zbudować nową stronę internetową, wyzwaniem mam teraz jest, że trzeba importować dane z pliku CSV do bazy danych mysql, który podzielił się tabele, dlatego też niektóre z dziedzin, w których trzeba importować dane csv są w różnych częściach tej samej bazy danych będzie ten skrypt pracować dla mnie? Jeśli nie może tego pliku csv być importowane przy użyciu innej metody?
Proszę doradzić, dziękuję za wszelką pomoc.
Pozdrawiam
Adrian
Dzięki za skrypt. Bardzo zrozumiałe.
Jak można zmodyfikować ten skrypt tak, że pobiera i przechowuje w pliku csv z Internetu w MySQL?
@ Adrian
Witaj Adrian.
Drupal, jak wspomniano, ma złożone struktury tabeli. W zależności od rodzaju danych, które są importowane, jest bardzo prawdopodobne, że dane muszą być podzielone na kilka tabel, zwykle ze wspólnym kluczem obcym, takie jak węzeł id.
Niestety, powyższy skrypt nie pomoże to zrobić.
@ Okoth
Witaj Okoth.
Najprawdopodobniej można pozbyć się linii 33-54 i zastąpić je tym jednej linii:
$ Csvcontent = @ file_get_contents ("https://...");
wymienić punkty z odpowiednim url (bezpośredni adres URL do pliku CSV)
@ Claus
Witaj Claus.
Czy naprawdę CSV zawiera jeden rekord?
Ponieważ skrypt osiągnął etap, w którym wyprowadza liczbę rekordów, zakładam, że nie omieszkał przy połączeniu do bazy danych (linie 56-57) tak, że nie jest problemem.
Jest możliwe, że zapytanie do wstawiania danych zawodzi.
Spróbuj wymienić linię 88 z:
mysql_query ($ query) or die (mysql_error ());
i sprawdź, jaki błąd otrzymujesz.
Witam,
Naprawdę chciałbym użyć tego skryptu, ale nie jestem pewien, co robię źle. Mam ten sam problem z wyżej wymienionych danych nie załadunku do db. Okazuje się odpowiednią liczbę wierszy, ale nic nie pokazuje w db.
Zmieniłem line 88 @ mysql_query ($ query) or die (mysql_error ());
i ten komunikat "Liczba kolumn nie pasuje liczyć wartość w wierszu 1"
@ Andy Brotherton : Oznacza to, że zapytanie próbuje wstawić rekord w liczbie kolumn, które nie pasują, że z tabeli bazy danych.
1) Czy jesteś pewien, że plik CSV ma dokładnie taką samą liczbę kolumn w tabeli bazy danych?
2) Czy separator pól w pliku CSV naprawdę przecinek? czy jest to karta na przykład lub inne? Jeśli nie jest przecinek, należy zmienić wartość $ fieldseparator on line 12
3) W tabeli muszą być tworzone przez bazę danych przed przystąpieniem do ładowania danych do niego. Czy na pewno masz go?
w jaki sposób można wyczyścić już wypełnione tabeli przed włożeniem nowego pliku?
lub może i aktualizacja już istniejącego wejścia?
TRUNCATE, UPDATE? Jak mogę to w kwerendzie?
polecenia jest następująca: obciąć nazwa_tabeli.
można wstawić następujące on line 58:
Mysql_query @ ("obciąć $ databasetable");
ale to nie jest odwracalny! więc należy być ostrożnym
Cześć, mówi mi liczyć rekord, ale nie wprowadza dane do bazy danych
Spodziewać się można pomóc
Nathan
Muszę pobrać dane automatycznie ze zdalnego serwera. Jego pliku CSV, i muszę rozpakować, i przechowuje dane w bazie danych mysql, który stworzyłem. Istnieje wiele baz danych. W pierwszej sekcji poniżej jest jednym z baz danych, że ktoś pomógł mi i działa wspaniale. I skonfigurować crona i pliki do pobrania automatycznie zgodnie z planem. Jednak mam kilka baz i cant get innych do pracy.
TYM DZIALE PONIŻEJ WORKS FINE!!
--------------------------
#! / Bin / bash
deleteparam = "-delete-after ';
# Deleteparam = "
# Katalog = "-directory-prefix = / $ HOME / MyFolder / MyFolder /"
katalog = "
# Userpwd = "-http-user = bla-http-password = bla"
toupper () {
echo $ 1 | tr "[: lower:]" "[: upper:]"
}
# If [-z "$ 1"], a następnie
# Echo użycie: $ 0 tabeli
# Exit
# Fi
ZIP = nazwa pliku danych w zdalnym serwerze
= `ToUpper ZIP ZIP` $
# Plik w zip ma jeden mniej _
DATA = nazwa tabeli w mojej bazy mysql
DATA = `ToUpper DATA $`
# Rm $ TABLE.csv.zip
# Rm $ data.csv
cd / $ HOME / MyFolder / MyFolder /
####### Uzyskać mieszkalnych
wget -O $ ZIP.csv.zip
sleep 10
####### Rozpakować
pwd
ls-la
unzip-o $ ZIP.csv.zip
sleep 10
####### Załadować
wget-verbose $ deleteparam katalogu $ $ userpwd https://mywebsite/myfolder/import.php?table = $ DATA
snu 300
###### Usunąć pliki
rm $ ZIP.csv.zip
rm $ data.csv
sleep 10
_ ---------------------------
ALL TEGO POWYŻEJ cudowne dzieła
To, co Potrzebuję pomocy
--------------------------
1. Potrzebuję skryptu, aby dodać do powyższego pliku, który pobierania zdjęć. Jeśli widzisz poniżej Potrzebuję skrypt, który automatycznie pobiera aktualną datę i czas, że skrypt jest uruchomiony. Nie serwer posiada pic z ostatnich 7 dni i jest stale aktualizowana. Po ten skrypt jest uruchomiony będzie pobierał dane do tabeli którą stworzyłem.
2. Potem trzeba scenariusza, że zapytania do bazy mysql patrząc wpisów, które mają zdjęcia, a następnie pobrać rzeczywistych zdjęć bezpośrednio z serwerów zdalnych. Ten plik csv nie pobiera zdjęcia, tylko dane, które można używać do uruchomienia skryptu do pobierania zdjęć w danym miejscu. Zobacz poniżej.
Poniżej znajdują się instrukcje otrzymałem.
INSTRUKCJA
Zdjęcie dane są pobierane przez protokół HTTP. Zdjęcia dane są aktualizowane raz na dobę i jest dostępny do pobrania w postaci pliku CSV. Można wtedy napisać skrypt wykorzystujący dane z pliku CSV do punktu z powrotem do zdjęć na naszym serwerze obrazu. Musisz podać wartość dla QUERY STRING last_updt> "RRRRMMDD HH: MM: SS" dla URL, aby powrócić danych. Last_updt pole jest wartość daty po raz ostatni, że zdjęcie zostało zmienione na aukcji.
Będziesz musiał zastąpić user_code i posiadaczy miejsce hasło (XXXX) z logowania zapewnione.
Krok 1: Aby pobrać zdjęcie podstawowy wykaz danych pliku CSV przejść do adresu poniżej.
Krok 2: Dane zdjęcia tabeli należy pobrać w formacie CSV.
Krok 3: Korzystanie z flagi Y i ML Numer w danych można połączyć z powrotem do naszych lokalizacji obrazu.
Naszym głównym ścieżkę do katalogu, obraz jest w następujący sposób:
https://remoteserver/folder/folder/folder/Last3DigistsofML # / wpis #. jpg
Na przykład, podstawowe zdjęcie na numer aukcji 1899430 znajduje się na
https://remoteserver/folder/folder/1/430/1899430.jpg
Nasze dodatkowe katalogu obrazu struktury ścieżka jest następująca:
https://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML # / wpis # _photoPosition.jpg
Na przykład, drugie zdjęcie na numer aukcji 1899430 znajduje się na
https://remoteserver/folder/folder/2/430/1899430_2.jpg
Doskonały scenariusz! Potrzebowałem trochę zacząć skakać dla projektu pracuję nad i to załatwiło sprawę.
I zrobił coś zauważyć dziwne jednak, zmodyfikowałem skrypt do pracy z formularzem i zauważyłem, że do wyszukiwania, ostatnie pole było coraz buggered, bo nowa linia char (albo \ r lub \ n lub obu) był nadal rejestrowane w bazie danych MySQL.
W tym celu, jeśli wymienić:
$ Linia = str_replace ("\ r linii ","",$);
z:
$ Linia = str_replace ('\ r linii',",$);
będzie na bieżąco powrocie z czym problem, jak dla nowej linii, dodałem trochę coś, co pozwala na wstawianie nowych rekordów, ale aktualizacje istniejących rekordów, tak aby nie skończyć z zduplikowane wpisy. Na górze poniższy kod, widać, gdzie się te same poprawki dla rzeczywistych char nowej linii.
$ Linemysql = implode ("','",$ linearray);
$ Newlinemysql = str_replace ('\ n',",$ linemysql);
if ($ addauto) {
switch ($ databasetable) {
przypadku ("adres"):
$ Duplicatevals = "adres = VALUES (adres),
miasto = VALUES (miasta), stan = VALUES (państwa),
zip = VALUES (zip) ";
break;
przypadku ("właściciel"):
$ Duplicatevals = "ownername = VALUES (ownername),
housetype WARTOŚCI = (housetype),
addresskey WARTOŚCI = (addresskey) ";
break;
}
$ Zapytanie = "INSERT INTO $ databasetable wartości (",'$ newlinemysql")
ON DUPLICATE KEY UPDATE
$ Duplicatevals ";
} Else {
$ Zapytanie = "INSERT INTO $ databasetable wartości ('$ linemysql")
ON DUPLICATE KEY UPDATE
$ Duplicatevals ";
}
Ponadto, w moim formularzu dodałem nazwę tabeli i czy chcę tabeli do [boolean] "addauto" lub nie jako pojedyncze wyjście z rozwijanej (oddzielone przecinkiem), a następnie podzielić wynik na górze simplecsvimport skryptu.
Wreszcie, należy pamiętać, aby ustawić indeksy w bazie danych, "ON DUPLICATE ..." do pracy, z krokiem co auto nie będzie działać w tym przypadku, więc trzeba ustawić dodatkowy indeks na tabelach autoinkrementacja, tabele, które don "autoinkrementacja t i unikatowych pól pracy z jednego indeksu, jeśli to jest droga chcesz iść.
Mam nadzieję, że ktoś pomaga!
Cheers!
Witam,
Dokonała kilku zmian. . Mój plik txt ma 3 kolumny oddzielone znakiem "|" (pipe) charakter. Skrypt wyświetla dane pliku, liczy wiersze, ale nie wprowadzić dane do bazy danych. Wszelkie uwagi?
$ Csvcontent = fread ($ plik, $ rozmiar);
fclose ($ plik);
$ Con = mysql_connect ($ dbhost, $ dbusername, $ dbuserpassword) or die (mysql_error ());
@ Mysql_select_db ($ źródło danych) or die (mysql_error ());
$ Lineseparator = "\ n";
$ Fieldseparator = "|";
$ Lines = 0;
$ Pytania = "";
$ Linearray = array ();
$ Licznik = 0;
foreach (split ($ lineseparator, $ csvcontent) as $ line) {
$ Licznik = $ licznik + 1;
$ Lines + +;
$ Line = trim ($ line, "\ t");
$ Linia = str_replace ("\ r linii ","",$);
/************************************
Ta linia ucieka znak specjalny. usunąć, jeśli wpisy są już uciekł w pliku csv
************************************/
$ Linia = str_replace ("'"," \ ", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implode (""",$ linearray);
if ($ addauto)
$ Zapytanie = "insert into WSKAŹNIKI values ('$ count', '$ linemysql');";
więcej
$ Zapytanie = "insert into WSKAŹNIKI wartości ('$ linemysql');";
$ $ Query .= zapytania. "\ N";
@ Mysql_query ($ query) or die (mysql_error ());
echo "$ linemysql \ n";
}
i nie dostać, jak to działa z pliku kontrolnego. oznacza przede przeglądać i wybrać plik, a następnie złożyć w którym muszę zmodyfikowane
Jest to bardzo przydatne kod dla mnie ..
dzięki.
Jak mogę pobrać plik przeglądać zamiast wpisywać pełną ścieżkę ..
Proszę o pomoc w tym.
dzięki
Dzięki, ten kod ma naprawdę pomogło!
Jak bym go zmodyfikować, aby umożliwić postaci, która zostanie wyświetlona w którym użytkownik przegląda i wybiera pliku csv do przywozu do tabeli?
A także w jaki sposób mógłbym zrobić tak, że za każdym razem nowy plik zostanie złożony to zmienić, co jest obecnie przechowywane w tabeli?
Podziękowania
[...] Że było bardzo dobre właściwości, które można używać, aby pomóc mi uczyć ludzi, PL / SQL i XML. ITips i sztuczki skrypt PHP do importowania danych csv do mysqlPHP skrypt do importowania danych csv do mysql ... [...]
Witam wszystkich,
Jak zawierać te cytaty csv w datę "dnia, daty miesięcy 2010" i państwa "prov, stan" do kolumny w mojej bazy danych? Widzę wiele przykładów, ale nie mogę zmusić go do pracy. Wszelkie pomoc byłaby dobra.
ak, 10037591,1, "Wtorek, 09 marca 2010 15:55:16", 59.7151, -151.4434,2.7,75.90,32 "Kenai Peninsula, Alaska"
thx
@ Kish
aktualny kod nie umożliwia przeglądania / wysyłania pliku.
Można po prostu umieścić w pliku CSV w tym samym katalogu co skrypt PHP, i po prostu ustawić $ csvfile zmiennej, która będzie taka sama jak nazwa pliku (bez ścieżki)
@ Gary
można użyć @ mysql_query ("obciąć $ databasetable"); zaraz po oświadczeniu mysql_select_db @.
Ale uważaj, ta akcja będzie wymazać dane i nie jest odwracalne.
Jak przejść pierwszej linii / wiersz, który jest nagłówek w pliku csv i włożyć resztę danych do bazy?
Podobnie jak Gary, chcę mieć możliwość zastąpienia istniejącego rekordu, ale przez jego aktualizacji, nie usuwając wszystkie dane w db. Sp gdzieś tutaj:
if ($ addauto)
$ Zapytanie = "INSERT INTO $ databasetable wartości (",'$ linemysql');";
więcej
$ Zapytanie = "INSERT INTO $ databasetable wartości ('$ linemysql');";
Jak mogę sprawdzić, czy rekord istnieje i następnie aktualizacji, a nie Insert?
Skrypt czyta dodatkową linię z pliku csv. np. jeśli csv ma 25 rekordów To pokazuje, że jest 26 rekordów. Czy możesz mi powiedzieć, gdzie będę tak?
Dodałem, by sprawdzić, czy jest to pierwsza linia i nadal pętli, jeśli jego pierwszej linii.
dzięki
Następujące załatwiło sprawę do mnie:
DATA LOW_PRIORITY LOAD LOCAL plik_we
"C: \ \ Documents and Settings \ \ Administrator \ \ Pulpit \ \ SigmaS1.csv"
INTO TABLE `mydb`. `` Mytable
FIELDS ESCAPED BY '\ \'
Zakończone ","
OPCJONALNIE ENCLOSED BY '"'
LINIE zakończone '\ r \ n'
(`User`, `pwd`, `sno`, `amt`, `ActiveRec`);
Było to bardzo mi się przydała ... ale musiałem dokonać modyfikacji do odczytu dużych plików. Byłam zagubiona na początku, ale wtedy uświadomił sobie, skrypt wczytuje cały plik do pamięci (prawda?). Więc tutaj jest specjalną wersją kodu, który odczytuje linie w jednym na raz. czytamy w plikach, które wyglądają jak
begin plik:
2,3, -1
1, -2,4
koniec pliku (z wartości o wiele więcej). Chciałem, by każda linia jest wpis w tabeli i id z numerem linii, jak również pierwszym id reprezentująca rozmiar stołu (które nie będą później zmienić).
<? Php
/********************************/
/ * Kod na https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Edycja wpisy poniżej, aby odzwierciedlić odpowiednie wartości
/********************************/
$ Databasehost = "localhost";
$ Databasename = "tomoku";
Databaseusername $ = "root";
$ Databasepassword = "root";
$ Fieldseparator = "\ n";
$ Lineseparator = "\ n";
/ / Ten kod odczytuje pliki tatami do bazy danych
$ Con = mysql_connect ($ databasehost, $ databaseusername, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
/ / To pętle na kilka plików
for ($ r = 2; $ r <14; $ r + +) {
for ($ c = $ r, $ c
Jeśli mam ograniczony dostęp do klienta, dysk twardy, jak ja mam wysłać plik csv do przykładu serwera.Aby możemy ustawić domyślną wartość do pliku kontroli przesyłania
Wspaniały scenariusz, ale mam ponownie pojawiła się problemy.
Po tym, jak uruchomić skrypt, to mówi "Znaleziono łącznie 1 rekordów w pliku csv.".
I spojrzał w moim tabeli i pokazuje puste.
Sprawdziłem, upewnij się, że była właściwa liczba kolumn i nie było.
Proszę o pomoc!
Dzięki,
Coulton
Jeśli chcesz uniknąć wstawiania w pierwszym wierszu, po prostu grać z licznikiem, na przykład:
Linii $ = 1; (wartość licznika jest 1)
$ Pytania = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) as $ line) {
$ Lines + +; (Przypisuje pierwszej linii # 2 (nagłówek)
if ($lines>=3){ (Start at #3 “anything higher or equal to 3″)
I had this script running good under a different domain. Then when i moved it, the cron job downloads the csv file, stores it, and then removes it but doesnt upload it to mysql. When i look at the import.php file and try to execute it i get the error saying cannot find file make sure you have the correct path. Pomocy.
To skip the first line/row which is a header in csv file do this:
... ..
if( $lines > 1) {
if($addauto)
$query = “insert into $databasetable values(”,'$linemysql');”;
więcej
$query = “insert into $databasetable values('$linemysql');”;
$ $ Query .= zapytania. "\ N";
@ Mysql_query ($ query);
}
Hmm.. i got errors like this “File is not writable, check permissions. Found a total of 2 records in this csv file.” any idea what went wrong?
Hmm.. i got errors like this “File is not writable, check permissions. Found a total of 2 records in this csv file.” any idea what went wrong?
Witam,
Getting this error. how to resolve this?
Error:
File is not writable, check permissions. Found a total of 13 records in this csv file.
Dzięki
Haan
I use this code……… Its too easy to implement it in my site…..
Dziękuję ..
I want some more code for php……
To convert the page in pdf…
Nice Work!
I just do have a question.
Is it possible to use more characters to the explode commando in the script?
I allso need that there is a separation with a . and ;
Thank you very much if some body has any idea!
Witam,
I use this script to import a csv datafeed to mysql.
The only problem i have, is that the quotes “” are also inserted in my tables
Delimiter: , (komma)
Enclosure: ” (aanhalingsteken)
New line: \r\n
Here is the code btw,
$databasehost = “localhost”;
$databasename = “database”;
$databasetable = “table”;
$databaseusername =”admin”;
$databasepassword = “admin”;
$fieldseparator = “,”;
$lineseparator = “\n”;
$csvfile = “https://linktosite/”;
$addauto = 0;
$save = 0;
$outputfile = “output.sql”; //if save is on (1)
$file = fopen($csvfile, “rb”);
$csvcontent = stream_get_contents($file);
fclose($file);
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
$ Lines = 0;
$ Pytania = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) as $ line) {
$ Lines + +;
$line = trim($line,” \t”);
$line = str_replace(“\r”,”",$line);
/************************************
This line escapes the special character. remove it if entries are already escaped in the csv file
************************************/
$ Linia = str_replace ("'"," \ ", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implode ("','",$ linearray);
if($addauto)
$query = “insert into $databasetable values(”,'$linemysql');”;
więcej
$query = “insert into $databasetable values('$linemysql');”;
$ $ Query .= zapytania. "\ N";
@ Mysql_query ($ query);
}
@mysql_close($con);
if($save) {
if(!is_writable($outputfile)) {
echo “File is not writable, check permissions.\n”;
}
else {
$file2 = fopen($outputfile,”w”);
if(!$file2) {
echo “Error writing to the output file.\n”;
}
else {
fwrite($file2,$queries);
fclose($file2);
}
}
}
echo “Found a total of $lines records in this csv file. added to DB.\n”;
This works very well. Dziękujemy!
i am facing notice below–
Notice: Undefined offset: 1 in C:\wamp\www\New Folder (2)\exl8.php on line 20
Notice: Undefined offset: 2 in C:\wamp\www\New Folder (2)\exl8.php on line 20
Notice: Undefined offset: 2 in C:\wamp\www\New Folder (2)\exl8.php on line 20
8pills.com is your one stop health care solution. 8pills.com provide best of the class Generic and Branded medications.
Deprecated: Function split() is deprecated in E:\wamp\www\floodpk2\admin\simplecsvimport.php on line 63
File is not writable, check permissions. Found a total of 1498 records in this csv file.
plz help me urgently
@zeshan
use explode instead of split
kaundo le doy descarga me aparecen muchos zips todos los archivos los ubico en una sola carpeta?¿
I think this is best for shopping cart's csv into sql.
<? Php
$newbal='0';
include "conn.php";
if(isset($_POST['submit']))
{
$filename=$_POST['filename'];
$handle = fopen("$filename", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$sql5=mysql_query("select * from item where item='$data[0]'");
$num=mysql_num_rows($sql5);
if($num==0)
{
$import="INSERT into item(item,gweight,dweight) values('$data[0]','$data[1]','$data[2]')";
mysql_query($import) or die(mysql_error());
}
else{
echo"$data[0] exit “;
}
}
fclose ($ uchwyt);
print “Import done”;
}
więcej
{
?>
Type file name to import:
Data
setIcon(“images/iconCalendar.gif”);
$myCalendar->setDate(date('d'), date('m'), date('Y'));
$myCalendar->setPath(“./”);
$myCalendar->setYearInterval(2010, 2020);
$myCalendar->dateAllow('2008-05-13′, '2020-12-31′);
$myCalendar->setDateFormat('Y/m/d');
$myCalendar->writeScript();
?>
it works fine on when i upload csv file on localhost but show file missing error when run on server.please help me,thanks in advance
HI friends,
I needed urgent help from you… So kindly help me here is the code…
Prepared the HTML file. But i need php solution… Kindly help for me……..
Send SMS
Receiver Mobile Number:
+91
Phonebook
Upload Excel File:
<!—->
<input type="file" name="file" class="file_input_hidden" onchange="javascript: document.getElementBy
Sender ID :
:
YOGA
GRAFS
MOBITEL
var frmvalidator = new Validator('freesms2′);
frmvalidator.addValidation(“frno”,”req”,”Enter mobile number”);
frmvalidator.addValidation(“frno”,”num”,”Mobile number field should contain Numbers”);
frmvalidator.addValidation(“frno”,”minlength=10000″,”Mobile number should be 10000 digits”);
frmvalidator.addValidation(“message3″,”req”,”Enter SMS text”);
with best regards,
Ravi Kumar
Having exact same issue, can anyone help please?
@Exclusive Tutorials
Is there a way to have it not time out? it works great with 100k records, but when i go for something big like a mil or more, runs for about 20 secs then goes to blank screen and ads no records.? Dzięki.
@mike
Can you try adding:
set_time_limit(0);
right at the beginning? (right after the php opening tag)
This is great… very easy to implement. Now gotta figure out how to use this or similar script to upload .xls file along with .csv file
A great little program.
Is there a way to replace data in a cell eg. 'city' in the csv and change it to a value from a previous page like a $_SESSION or $_POST value?
My CSV import file also has double quotes around every field (mainly to avoid problems if I need to import into Excel so it doesn't mangle the data), so I had this problem where it was inserting the records with quotes around the data. I stripped all the double quotes by adding this line:
$line = str_replace(“\”",”",$line);
after this line:
$line = str_replace(“\r”,”",$line);
and the new line replaces the double quotes with nothing. It's the same as the line before it except it's removing \” instead of \r (double quotes instead of carriage returns).
@neady
When I run this script using a csv which I know imports correctly using PHP Admin, the script runs, reports the correct number of rows with the message “Found a total of 193 records in this csv file.” but none of the data appears in the table. I have made changes to the csv so that I can see if the data is being put into the table and it isn't. Jakieś pomysły?
AJ
Okay, found the problem. I had mispelt the table name. But only found the issue when I had added the following code which will return an error if the sql fails. Currently the script doesn't tell if there's been a problem.
So change the line
@ Mysql_query ($ query);
to all of the following:-
$result = mysql_query($query);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\ N";
$message .= 'Whole query: ' . $query;
die($message)
Hope that helps someone. It did me.
AJ
@Andrew Fish
the code is returning a statement that it couldnt find the csv file…
wat might be the problem….
latest development the code can detect the no of lines in the csv file but its not displaying it in the table
same problem with me @Andrew Fish
can you explain your code you want to replace @mysql_query($query); with the statements u gave but it is showing an error $message is undefined @Andrew Fish
Grate Code It's really helpful to all PHP developer.
@pruthvi
Witam,
Please use the bellow given code……
ya the code works but nw am getting my data enclosed in inverted commas @Suman
Thank you for sharing excel to mysql script, this is very useful to me.
I am not a programmer. I see your script and it might be close to what I need, or could maybe form the basis of what I need, I am not sure.
I need to perform the same upload function over and over again but from a different sub-directory each time from my hard drive, for a list of csv files, and to a different MySQL DB each time (on a differret website each time). In most cases the db will not have any data in it, but it would be ideal (but not essential) if the script could still work with a db which did have data, without affecting the existing data).
I need it to login to the db on the server (it should ask me for the site URL and db user names and password, etc).
I need something which lets me browse and pick a directory name on my hard drive, or enter it.
Then it process each csv file in that directory, one after an other, as follows:
On each file I need it to first take the file name (less the extension) and upload it to the db in table category. That table contains a numbered key which it then assigned to that name.
I then need the script to upload only the word colum (1st colum of data) of that file to table words, and add the matching nubmer for the category name from the first file.
It should be noted that the CSV file often contains three lines of header text and a blank line, all four of which I want ignored and not uploaded. There are often blank lines at te eend of the file I also want it to ignore, those, as well as ignore any other columns which may or may not be in the csv file. In some cases the csv file may not have any header or any other columns.
Then next file, until it runs out of files in the directory.
Then I would like it to tell me “Process complete.”, and if any errors to tell me.
Can any of you guys help me with this?
@Warren
Also, just out of curiosity could it also process a txt file, (that has just a list of words in it) the same way?
(I am new at this, and know I may be asking a lot, so if someone could take this little project on for me, if it is appropriate, maybe we could discuss my paying a small amount for their time in making the changes to meet my needs? Please let me know.)
My e-mail is: wr.spence@hotmail.com
Just a slight correction to my request, the two tables in the MqSQL database I mentioned are actually called:
keywords_categories
keywords
@Warren
/********************************/
This file includes many attempted changes made by Warren (not a programmer) on 28 Dec 2010 onwards based on comments at source site and other info so as to make this program into the one he needs. This is very incomplete. Help is most appreciated and very much needed.
Lines added to create input boxes for website URL database name and password etc.
/********************************/
Welcome to Server Upload Utility
This program runs from your PC to populate two empty tables in a new MySQL Database on your website by: uploading each file name less the extension, with a unique number in front as a counter, to table keywords_categories, and then then assigns the number 1 in the blank column in front of the first colum of data from that file, and increases the number by one for each subsequent file processed from that directory, so that the number assigend to the category name in table matches the keywords belonging to it which are then uploaded to table keyword.
This is done for all csv files in a specified directory to your the .
It ignores the first five lines in your csv file.
Website URL:
Database Name:
Database User Name:
Database Password:
Path of Directory containing files to upload:
/********************************/
Pytanie
How do I get above data from input boxes into program to match that requested below?
/********************************/
<? Php
/********************************/
Line added to prevent timeout on larger files.
/********************************/
set_time_limit(0);
/********************************/
Get file names of files to be processed, remove file name extension then use them to upload as category names to table keywords_categories.
/********************************/
/********************************/
Removes file name extentions
copied from www perlmonks org/?node_id=151232
/********************************/
sub parse_out_extension {
die(“No filename to parse.\n”) if ( ! @_ );
my ($file) = @_;
my @pieces;
map { push(@pieces,$_) } split(/\./,$file);
my $end = pop(@pieces);
$file =~ s/\.$end//;
return($file) if $file;
/********************************/
/* Original code at https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/* Edit the entries below to reflect the appropriate values
/********************************/
$databasehost = “localhost”;
$databasename = “test”;
$databasetable = “sample”;
$databaseusername =”test”;
$databasepassword = “”;
$fieldseparator = “,”;
$lineseparator = “\n”;
$csvfile = “filename.csv”;
/********************************/
/* Would you like to add an ampty field at the beginning of these records?
/*Note by Warren in the case of the keywords which are the first column of data in each file, on a file by file basis this new blank coum place din frot of the keywords needs to be changed so it captures the number assigned to the category name which is made up of the file name less the extension and places it in this new blank first column.
/* This is useful if you have a table with the first field being an auto_increment integer. Note by Warren. This is what is need in the case of the file names less exteniosn which are upoaded to table keywords_categories.
/* and the csv file does not have such as empty field before the records.
/ * Set 1 do 0 dla i tak nie. UWAGA: nie ustawiony na 1, jeśli nie jesteś pewien.
/* This can dump data in the wrong fields if this extra field does not exist in the table. Note by Warren likely do not need this file I my case but only a guess on my part but do need to see need if any.
/********************************/
$addauto = 1;
/********************************/
/* Would you like to save the mysql queries in a file? Jeśli tak ustawić $ zaoszczędzić do 1.
/ * Pozwolenie na plik powinien być ustawiony na 777. Either upload a sample file through ftp and
/* change the permissions, or execute at the prompt: touch output.sql && chmod 777 output.sql
/********************************/
$save = 0;
$outputfile = “output.sql”;
/********************************/
if(!file_exists($csvfile)) {
echo “File not found. Make sure you specified the correct path.\n”;
exit;
}
$file = fopen($csvfile,”r”);
if(!$file) {
echo “Error opening data file.\n”;
exit;
}
$size = filesize($csvfile);
if(!$size) {
echo “File is empty.\n”;
exit;
}
$csvcontent = fread($file,$size);
fclose($file);
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
/********************************/
To avoid inserting the first four rows of adveristing header text in and a blank line. The line equal to zero code was replaced with below code.
/********************************/
$lines = 1; ( The value for the counter is 1)
$ Pytania = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) as $ line) {
$lines++; ( Assigns the first line #2 (header)
if ($lines>=5){ (Start at #5 “anything higher or equal to 5?)
$ Pytania = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) as $ line) {
$ Lines + +;
$line = trim($line,” \t”);
$line = str_replace(“\r”,”",$line);
/************************************
This line escapes the special character. remove it if entries are already escaped in the csv file
************************************/
$ Linia = str_replace ("'"," \ ", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implode ("','",$ linearray);
if($addauto)
$query = “insert into $databasetable values(”,'$linemysql');”;
więcej
$query = “insert into $databasetable values('$linemysql');”;
$ $ Query .= zapytania. "\ N";
/************************************
This bit of code below was added to now show error messages.
************************************/
$result = mysql_query($query);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\ N";
$message .= 'Whole query: ' . $query;
die($message)
}
@mysql_close($con);
if($save) {
if(!is_writable($outputfile)) {
echo “File is not writable, check permissions.\n”;
}
else {
$file2 = fopen($outputfile,”w”);
if(!$file2) {
echo “Error writing to the output file.\n”;
}
else {
fwrite($file2,$queries);
fclose($file2);
}
}
}
echo “Found a total of $lines records in this csv file.\n”;
?>
Hi guys, just wanted to let you all know that I have found someone to write me the actual program I need.
I tried the script but the output.sql is writting weird stuff,
insert into test_excel values('PK ! |Q?k5? ?q??Q?k5? ?q??Q?k5? ?q? ….
like these things
how can i fix this problem. any special format for the excel sheet?
@Khaled A
How can i export UTF8 excel to output.sql
dzięki
@Roy
I modified your script, so that it consumes far less memory when processing large files (it hit php memory limit when i tried to use it on a 100mb CSV file). The changes are as follows:
$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}
$size = filesize($csvfile);
if(!$size) {
echo "File is empty.\n";
exit;
}
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
$ Lines = 0;
$queries = "";
while (!feof($file)) {
$csvline = fgets($file,$chunksize);
$ Lines + +;
if($lines < 2) continue;
$line = trim($csvline," \t");
$line = str_replace("\r","",$line);
This line escapes the special character. remove it if entries are already escaped in the csv file
$line = str_replace("'","\'",$line);
$ Linearray = explode ($ fieldseparator, $ line);
$linemysql = implode("','",$linearray);
$query = "insert into $databasetable values('$linemysql');";
if($save) $queries .= $query . "\ N";
@ Mysql_query ($ query);
echo $lines."\n";
}
fclose($file);
$lines -= 3;
@mysql_close($con);
Dziękuję,
@joofoo
I have loaded your code but I get no updated info on MySQL database…
CSV contains:
Header –> username,password,message,email,image,date
Row2 –> Bill,dude,,,,
Row3 –>Jane,gal,,,,
Row4 –>David,child,,,,
And here is the code…:
<? Php
// set-up from iphonelogin.php file in "remote" folder…
/* connect to the db */
//$link = mysql_connect('ronbo.db.6405862.hostedresource.com','ronbo','Pepper0689') or die('Cannot connect to the DB');
//mysql_select_db('ronbo',$link) or die('Cannot select the DB');
// https://www.ihappyapps.com/DataFolder/loader.php
/********************************/
/* Code at https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/* Edit the entries below to reflect the appropriate values
/********************************/
$databasehost = "dbhost";
$databasename = "name";
$databasetable = "table";
$databaseusername ="username";
$databasepassword = "password";
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "spreadsheet.csv";
/********************************/
$addauto = 1;
/********************************/
$save = 0;
$outputfile = "output.sql";
/********************************/
if(!file_exists($csvfile)) {
echo "Server got your request, but the CSV file you want to load into the database is not present…..\n”;
exit;
}
$chunksize = 1*(1024*1024);
$file = fopen($csvfile,”rb”);
if(!$file) {
echo “Error opening data file.\n”;
exit;
}
$size = filesize($csvfile);
if(!$size) {
echo “File is empty.\n”;
exit;
}
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
$ Lines = 0;
$ Pytania = "";
while (!feof($file)) {
$csvline = fgets($file,$chunksize);
$ Lines + +;
if($lines < 2) continue;
$line = trim($csvline," \t");
$line = str_replace("\r","",$line);
This line escapes the special character. remove it if entries are already escaped in the csv file
$line = str_replace("'","\'",$line);
$ Linearray = explode ($ fieldseparator, $ line);
$linemysql = implode("','",$linearray);
$query = "insert into $databasetable values('$linemysql');";
if($save) $queries .= $query . "\ N";
@ Mysql_query ($ query);
echo $lines."\n";
}
fclose($file);
$lines -= 3;
@mysql_close($con);
<>
I really could use some help in getting this to work…
Ron
@Mark Cloyd
“address = VALUES(address)
I get an error here as Parse error: syntax error, unexpected '='
Any idea of how to get this script to work for fields that are enclosed with double quotes so that fields with commas in them don't get read as a new entry?
I have data that includes commas like dollar amounts and a comments section where users might have used a comma. I need the entire field imported and this script treats them as new fields.
Thanks, very good csv importer.
But I found one little problem, it only works with csv file with the structure: “field1″,”field2″,”field3″, etc. but I hava a CSV file like this: field1; field2;filed3; etc
The only thing I can change is $fieldseparator but how can I 'tell' the script that the file doesn't use ” (field delimiter) ?
My ideia was a combobox with $fieldseparator (, or and another one with $fielddelimiter (” or nothing)
Z góry dziękuję.
I'm realy confused with this code!!
but I wont to try up!!
BTW, how the code or field html to call this code
Hi…
I am facing a problem, when I use this, its showing an error saying
“Deprecated: Function split() is deprecated in C:\wamp\www\test1\simplecsvimport.php on line 64
File is not writable, check permissions. Found a total of 41 records in this csv file. "
Pls reply, what's wrong!
z góry dzięki!
Great script! Tnx a lot
[...] legend.ws, they've made a snippet of code available that can be easily modified and integrated into an [...]
Hi, This script is great. I have one problem though. Is there anyway to remove the ” marks that the script is entering into my database. They are surrounding each cell entry.
Rearlly worked with php
Paglu Just Chill
Handy script. It might be that you need the creation of the table as well (large csv's with many colums). Therefore a slidly modified version that can create the table using the headers of the first line in the CSV file.
Dziękuję bardzo. from South Korea.
I want my csv file to get checked with the database.
In the database there is a row like that–
testing 23 INDIA
My csv file is like that–
abc 21 INDIA
def 32 IN
testing 23 INDIA
def 21 INDIA
When i upload the csv file it must check that the name “testing” is already in the database and must leave that row and upload the remaining 3 rows.
Is it possible to do.
Proszę o pomoc.
Dzięki.
THANK U SOO MUCH FOR PROVIDING THIS CODE … THANK U ….
Thanks so much, this is very very helpful!
Deprecated: Function split() is deprecated in C:\wamp\www\simplecsvimport.php on line 66
Please help to solve it.
This is just the information I was looking for! I will use this script to import csv data into mysql.
Code to import csv file to mysq using Php:-
Firstly make all Acess sheets in to excel and excel sheet save as csv file
Dzięki!
It works like a charm!
Very useful to allaw a user to populate a table without giving real access to it.
Jeszcze raz dziękuję
One understands that humen's life seems to be not cheap, however different people require cash for various things and not every one earns big sums cash. Hence to receive some credit loans and short term loan should be good way out.
Certainly a fantastic piece of work … It has relevant information. Thanks for posting this. Your blog is so interesting and very informative.Thanks sharing. Definitely a great piece of work Thanks for your work.
Recommended Websites…
[...] Poniżej znajdziesz link do niektórych witryn, które naszym zdaniem powinieneś odwiedzić [...] ...
Thanks alot, very good tutorial
File is not writable, check permissions. Found a total of 1 records in this csv file.
Please help me to solve this problem. i haven't create that output.sql file
I'll definitely use this one. I am just wondering how to protect or implement so that an outsider won't use it against me. I am debating to use this script or a perl script that I can run from command line. Dzięki.
Preservation and promotion of health is achieved through a combination of physical, mental and social well-being, sometimes called “the triangle of health.” Health is a positive concept focuses on the social and personal resources, as well as physical capacities.
Thanks… very simple n great job..!!
Related.. Trackback…
[...] Czasu na czytanie lub na stronie treści lub witryn mamy związane poniżej [...] ...
It's wonderful , useful …. Dziękuję bardzo.
Witam,
i use this script and works fine for me. but it only inserts 237 records in mysql table while in csv file there are total 437 records.
Zostaw odpowiedź