Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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
FiDO
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Radze zajrzec do manuala do opisu "funkcji" LOAD FATA INFILE, masz tam wszystko czego potrzebujesz.
Go to the top of the page
+Quote Post
Vertical
post
Post #3





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

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


LOAD DATA INFILE
Go to the top of the page
+Quote Post
ennics
post
Post #4





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

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


manual LOAD DATA INFILE przeczytałem cały, ale nic nie znalazłem, bardzo prawdopodobne że z powodu moich braków z angielskim (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
proszę chociarz od drobną podpowiedź.
Go to the top of the page
+Quote Post
Vertical
post
Post #5





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

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


Cytat
z powodu moich braków z angielskim (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Manual MySQL po polsku (jest tam też LOAD DATA INFILE)

Ten post edytował Vertical 17.02.2005, 15:26:55
Go to the top of the page
+Quote Post
ennics
post
Post #6





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

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


muczias gracjas !
Go to the top of the page
+Quote Post
FiDO
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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...
Go to the top of the page
+Quote Post
marianekk
post
Post #8





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.11.2004

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


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 ';'
Go to the top of the page
+Quote Post

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: 24.08.2025 - 15:40