Загрузить данные локального файла, не добавляя данные в БД

По какой-то причине эта функция не загружает данные в мою БД. Я запускаю эти тесты через 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)

1

Решение

Похоже, что в этом сценарии моя проблема была в строке LINES TERMINATED. Я изменил на это, и проблема была решена:

LINES TERMINATED BY '\r'
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]