लंबी और कड़ी खोज करने के बाद, और दूर-दूर तक हमने एक (जो हमें लगता है कि एकमात्र) समाधान मिला है:इन 'मिनी-क्वेरी' में से प्रत्येक के माध्यम से व्यक्तिगत रूप से लूप करने के लिए एक फ़ंक्शन बनाएं और ऐसा लगता है कि यह बहुत अधिक खुश है अभी व! हम वास्तव में पहले इस सुझाव पर आए थे, लेकिन हमने शुरू में इसे अस्वीकार कर दिया था क्योंकि सभी अलग-अलग डेटाबेस परिवर्धन को विभाजित करने के लिए कोड की 973 पंक्तियों को अलग करने में (और किया) बहुत समय लगेगा...
$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);