Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: LOAD DATA INFILE
Forum PHP.pl > Forum > Bazy danych > MySQL
ennics
używam takiego zapytania:
  1. <?php
  2.  
  3. $sql = &#092;"LOAD DATA INFILE 'c:/apache2triad/htdocs/files/oo.txt' \";
  4. $sql .= &#092;"INTO TABLE open_orders FIELDS TERMINATED BY '|' \";
  5. $sql .= &#092;"IGNORE 1 LINES\";
  6.  
  7. $loadData = mysql_query($sql);
  8.  
  9. ?>

tym sposobem ładuje plik do bazy. Baza natomiast nie zawiera pola 1 lp.
kiedy je dodaję:
  1. ALTER TABLE `oo` ADD `lp_oo` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;

i próbuję ponownie załadować plik txt wyskakuje błąd:
Kod
1062: Duplicate entry '5' for key 1

w bazie wygląda to tak że ładuje plik a kiedy napotka na zduplikowaną wartość zatrzymuje się. Ponaddto lp zaczyna się inkrementować od 4 i wczytuje tylko 3 rekordy.
próbowałem dodać IGNORE:
  1. <?php
  2. $sql = &#092;"LOAD DATA INFILE 'c:/apache2triad/htdocs/files/oo.txt' IGNORE \";
  3. ?>

ale to też nie pomogło, wczytuje tylko pięć rekordów i zatrzymuje się.
po dodaniu nazw kolumn
  1. <?php
  2. $sql .= &#092;"INTO TABLE oo (col1,col2,...coln) FIELDS TERMINATED BY '|' \";
  3. ?>

wyskakuje błąd:
Kod
LINES1064: 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 '(col1,col2

jak zrobić żeby przy ładowaniu pliku pole lp [uniq...] było ignorowane ?
czy może lepiej nadać ten atrybut jednemu z innych pól ?
FiDO
Radze zajrzec do manuala do opisu "funkcji" LOAD FATA INFILE, masz tam wszystko czego potrzebujesz.
Vertical
LOAD DATA INFILE
ennics
manual LOAD DATA INFILE przeczytałem cały, ale nic nie znalazłem, bardzo prawdopodobne że z powodu moich braków z angielskim winksmiley.jpg
proszę chociarz od drobną podpowiedź.
Vertical
Cytat
z powodu moich braków z angielskim winksmiley.jpg

Manual MySQL po polsku (jest tam też LOAD DATA INFILE)
ennics
muczias gracjas !
FiDO
Cytat(ennics @ 2005-02-17 15:16:44)
manual LOAD DATA INFILE przeczytałem cały, ale nic nie znalazłem, bardzo prawdopodobne że z powodu moich braków z angielskim winksmiley.jpg
proszę chociarz od drobną podpowiedź.

Cos w to watpie...

Przy opisie kazdego rodzaju zapytania na poczatku widzimy cos takiego:
Cytat("manual")
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS
        [TERMINATED BY '\t']
        [[OPTIONALLY] ENCLOSED BY '']
        [ESCAPED BY '\\' ]
    ]
    [LINES
        [STARTING BY '']
        [TERMINATED BY '\n']
    ]
    [IGNORE number LINES]
    [(col_name,...)]


Dalej juz nawet nie trzeba czytac...
marianekk
Na samej bazie to piszesz tak

load data infile '/temp/logi/plik.txt' into table lala
fields terminated by','

'/temp/logi/plik.txt' plik znajduje się w kataolgu c:\temp\logi
i ważne jest czym są rozdzielane pola czy ',' czy ';'
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.