Я хочу вставить данные из файла csv, который уже находится на моем сервере в моей базе данных.Как вставить данные из файла csv в базу данных mySQL (большие данные, быстрый способ)?
$myfile = "./files/data.csv";
Вот мое подключение:
class Database
{
private static $dbName = 'dbname' ;
private static $dbHost = 'localhost' ;
private static $dbUsername = 'dbuser';
private static $dbUserPassword = 'dbpassword';
private static $cont = null;
public function __construct() {
exit('Init function is not allowed');
}
public static function
connect()
{
if (null == self::$cont)
{
try
{
self::$cont = new PDO("mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
self::$cont->query("SET NAMES utf8");
self::$cont->query("SET CHARACTER SET utf8");
}
catch(PDOException $e)
{
die($e->getMessage());
}
}
return self::$cont;
}
public static function disconnect()
{
self::$cont = null;
}
}
И это, как я вставить данные в базу данных:
error_reporting(E_ALL); ini_set('display_errors', 1);
try {
$pdo = Database::connect();
$sql = "LOAD DATA INFILE '$myfile'
INTO TABLE `animals`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
(id,name,animal)";
$q = $pdo->query($sql);
$q->execute();
} catch (PDOException $q) {
echo 'Connection failed: ' . $q->getMessage();
}
Мой файл CSV выглядит следующим образом:
12,fred,cat,
13,tom,dog,
И это мой стол животных в моей базе данных
╔════╦═════════╦════════╦════════╗
║ id ║ name ║ age ║ animal ║
╠════╬═════════╬════════╬════════╣
║ ║ ║ ║ ║
║ ║ ║ ║ ║
║ ║ ║ ║ ║
║ ║ ║ ║ ║
╚════╩═════════╩════════╩════════╝
К сожалению, это не работает, это означает, что никакие данные не будут записаны в моей базе данных. Надеюсь, вы сможете помочь :)
Есть ли какой-либо причине вы не можете просто загрузить его непосредственно? http://stackoverflow.com/questions/3635166/how-to-import-csv-file-to-mysql-table –
Возможный дубликат [Импорт CSV-данных с использованием PHP/MySQL] (http://stackoverflow.com/questions/11448307/importing-csv-data-using-php-mysql) – Rehmat
'INTO TABLE 'животные' удаляют цитаты или используют тики' '' 'и ваши столбцы тоже' ('id', 'name', 'animal') '. Проверка ошибок PDO помогла бы вам здесь http://php.net/manual/en/pdo.error-handling.php –