По какой-то причине эта функция не загружает данные в мою БД. Я запускаю эти тесты через MAMP.
Это страница обработки, которая должна принимать входной файл и обрабатывать его в БД.
// Connect to database
$connect = mysql_connect('localhost','nopassword','nopassword');
mysql_select_db('gwt_extract', $connect);
if(!($connect))
{
die ("Unable to connect to database. Program aborted.");
}
$company_id = $_POST['select_company'];
// Upload files
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Allow certain file formats
if($imageFileType != "csv") {
echo "Sorry, only CSV files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
}
else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
$insert = "LOAD DATA LOCAL INFILE 'uploads/filename.csv'
INTO TABLE raw_data
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(id,date,query,impression,impression_change,clicks,clicks_change,ctr,ctr_change,avg_position,avg_position_change,@company_id)
SET company_id = 1";
mysql_query($insert) or die(mysql_error());
И моя структура таблицы выглядит следующим образом:
id int(11)
date date
query varchar(100)
impression int(6)
impression_change varchar(5)
clicks int(6)
clicks_change varchar(5)
ctr varchar(4)
ctr_change varchar(5)
avg_position varchar(5)
avg_position_change varchar(5)
company_id int(11)
Похоже, что в этом сценарии моя проблема была в строке LINES TERMINATED. Я изменил на это, и проблема была решена:
LINES TERMINATED BY '\r'
Других решений пока нет …