Après avoir cherché longtemps et durement, et de loin, nous avons trouvé une (ce que nous pensons être la seule) solution :créez une fonction pour parcourir chacune de ces 'mini-requêtes' individuellement et cela semble être beaucoup plus heureux à présent! Nous avons déjà rencontré cette suggestion auparavant, mais nous l'avons rejetée au départ car cela prendrait (et a pris) beaucoup de temps pour séparer 973 lignes de code pour diviser tous les ajouts individuels à la base de données...
$populate =
"
CREATE TEMPORARY TABLE IF NOT EXISTS `mldb`.`TempSchool`
(
`CentreNo` INT UNSIGNED NOT NULL,
`School` VARCHAR(255) NULL,
`Street` VARCHAR(255) NULL,
`Town` VARCHAR(255) NULL,
`County` VARCHAR(255) NULL,
`Postcode` VARCHAR(10) NULL,
`Tel` VARCHAR(45) NULL,
`URL` VARCHAR(512) NULL,
`Email` VARCHAR(255) NULL,
`Headteacher` VARCHAR(255) NULL,
`LEA` VARCHAR(45) NULL,
`LEANo` INT UNSIGNED NULL,
`EstablishmentNo` INT UNSIGNED NULL,
`URN` INT UNSIGNED NULL,
`Governance` VARCHAR(45) NULL,
`Phase` VARCHAR(45) NULL,
PRIMARY KEY (`CentreNo`)
)
ENGINE = InnoDB ;
" ;
populate ($dbc, $populate);
$populate =
"
LOAD DATA INFILE '$path'
IGNORE INTO TABLE `mldb`.`TempSchool`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\\r\\n'
IGNORE 1 LINES
(@AdNo, @UPN, @ULN, @UCI, @CandidateNo, @LegalSurname, @LegalForename,
@PreferredSurname, @PreferredForename, @Gender, @DOB, @Email,
@InCare, @EverInCare, @FSM, @FSMEver6, @EAL, @SENStatus, @AMA,
@Attendance, @RegGroup, @YearGroup, @EnteredYearDate,
@Class, @Subject, @Staff, @Initials,
CentreNo, School, Street, Town, County, Postcode, Tel, URL,
Email, Headteacher, LEA, LEANo, EstablishmentNo, Governance, Phase)
" ;
populate ($dbc, $populate);