Mam taki mały problem
nie wiem jak wstawić rekordy (500 - 20 000 rekordow) z pliku CSV, tak aby rekordy były unikalne nie powtarzały się, tzn gdy wczytam 2 razy ten sam plik rekordy nie dopisywały się ponownie.
1. istnieje pole id (autoincrement) identyfikujace dany rekord,
=======================
pobieram dane z pliku w ten sposób:
if (($handle = fopen('c:\przelewy\rok_2012.csv', "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
.......................
INSERT INTO `wplaty_CSV_test` ( `data` , `wplacajacy` , `konto` , `tytul_wplaty` , `kwota` ,`saldo` , `wpisane` ) VALUES ('2012-05-15','Pan Jan','45654654676888888', 'OPŁATA ', '9.20','6.66', 'NIE' )
.......................
===========================
czy może lepiej:
LOAD DATA LOCAL INFILE '<file name>' INTO TABLE <table>
============================
z powodu pola autoincrement mam problem z tym:
INSERT INTO tmp SELECT DISTINCT * FROM wplaty_CSV_test
===============================
tabela prezentuje się tak:
CREATE TABLE IF NOT EXISTS `wplaty_csv` (
`nr` int(11) NOT NULL auto_increment,
`data` date NOT NULL,
`wplacajacy` varchar(170) NOT NULL,
`konto` varchar(28) NOT NULL,
`tytul_wplaty` varchar(400) NOT NULL,
`kwota` float NOT NULL,
`saldo` float NOT NULL,
`wpisane` varchar(3) NOT NULL default 'NIE',
PRIMARY KEY (`nr`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
Jak wczytywać pliki CSV szybko sprawnie i skutecznie ?
Dziękuję z góry za pomoc
G.