Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> LOAD DATA INFILE
ennics
post
Post #1





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


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 ?

Ten post edytował ennics 17.02.2005, 13:44:51
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 23.08.2025 - 22:52