+++ /dev/null
-https://www.imdb.com/interfaces/
-
-Subsets of IMDb data are available for access to customers for personal and non-commercial use.
-You can hold local copies of this data, and it is subject to our terms and conditions.
-Please refer to the Non-Commercial Licensing
-https://help.imdb.com/article/imdb/general-information/can-i-use-imdb-data-in-my-software/G5JTRESSHJBBHTGX
-and copyright/license and verify compliance.
-https://www.imdb.com/conditions
-
-This will import the imdb dataset tsv into your mysql database for further user.
-Code based on the dataset at feb. 2020
-There will be no relations or whatsoever. Just plain data into tables.
-It also does not create any relation tables yet. Some tables have columns which have
-strings separated by comma in them.
-
-As of march 2020
-Title crew looks strange. The longest line is 16313 (wc -L title.crews.tsv)
-therefore the column directors and writers are defined as text and not
-varchar. Do not know if this is an error or correct...
-
-
-This is not a good example to be written in PHP. But you can use it.
-Don't execute it through a webserver. It is a CLI script
-
-# Usage
-Download and place the tsv files from https://www.imdb.com/interfaces/ into the datasets folder.
-Decide which one do you need. Alter $filesToImport in import.php to match the files.
-Decide if you need a full text search index. Needed if you want to use the api.php.
-Adding the index after the initial import is not a good idea. It takes ages!!
-Using the index will slow down the import. To use change BUILD_INDEX to true in import.php file
--- /dev/null
+# Source
+
+https://www.imdb.com/interfaces/
+
+# Description
+
+This will import the imdb dataset tsv into your mysql database for further use.
+There will be no relations or whatsoever. Just plain data into tables.
+It also does not create any relation tables yet. Some tables have columns which have strings separated by comma in them.
+
+# As of march 2020
+
+Title crew looks strange. The longest line is 16313 (wc -L title.crews.tsv)
+therefore the column directors and writers are defined as text and not
+varchar. Do not know if this is an error or correct...
+
+This is not a good example to be written in PHP. But you can use it.
+Don't execute it through a webserver. It is a CLI script
+
+# Usage
+
+Download and place the tsv files from https://www.imdb.com/interfaces/ into the datasets folder.
+Decide which one do you need. Alter `$filesToImport` in `import.php` to match the files.
<?php
/**
* dolphin. Collection of useful PHP skeletons.
- * Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+ * Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
require 'lib/helper.class.php';
## database settings
-define('DB_HOST','localhost');
-define('DB_USER','user');
-define('DB_PASSWORD','test');
-define('DB_NAME','imdb');
+const DB_HOST = 'localhost';
+const DB_USERNAME = 'user';
+const DB_PASSWORD = 'test';
+const DB_NAME = 'imdbdatasets';
## DB connection
-$DB = new mysqli(DB_HOST, DB_USER,DB_PASSWORD, DB_NAME);
-if ($DB->connect_errno) exit("Can not connect to MySQL Server\n");
-$DB->set_charset("utf8mb4");
-$DB->query("SET collation_connection = 'utf8mb4_bin'");
+$DB = new mysqli(DB_HOST, DB_USERNAME,DB_PASSWORD, DB_NAME);
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT;
+if ($DB->connect_errno) exit('Can not connect to MySQL Server');
+$DB->set_charset("utf8mb4");
+$DB->query("SET collation_connection = 'utf8mb4_0900_ai_ci'");
## defaults
$returnData = array();
<?php
/**
* dolphin. Collection of useful PHP skeletons.
- * Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+ * Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
/**
* read and create mysql tables based on the tsv data from imdb
- * dataset format based of feb. 2020
- * See README for more details
*/
mb_http_output('UTF-8');
ini_set('error_reporting',-1); // E_ALL & E_STRICT
date_default_timezone_set('Europe/Berlin');
-## files located in dataset/ directory
+## files located in datasets/ directory
$filesToImport = array(
- 'TitleAkas' => 'title.akas.tsv',
- 'TitleBasics' => 'title.basics.tsv',
+ #'TitleAkas' => 'title.akas.tsv',
+ #'TitleBasics' => 'title.basics.tsv',
'TitleCrew' => 'title.crew.tsv',
- 'TitleEpisode' => 'title.episode.tsv',
- 'TitlePrincipals' => 'title.principals.tsv',
- 'TitleRatings' => 'title.ratings.tsv',
- 'NameBasics' => 'name.basics.tsv'
+ #'TitleEpisode' => 'title.episode.tsv',
+ #'TitlePrincipals' => 'title.principals.tsv',
+ #'TitleRatings' => 'title.ratings.tsv',
+ #'NameBasics' => 'name.basics.tsv'
);
-## create mysql fulltext index or not.
-## Warning. It takes a very long time!
-define('BUILD_INDEX',false);
-
## database settings
-define('DB_HOST','localhost');
-define('DB_USER','user');
-define('DB_PASSWORD','test');
-define('DB_NAME','imdb');
+const DB_HOST = 'localhost';
+const DB_USERNAME = 'user';
+const DB_PASSWORD = 'test';
+const DB_NAME = 'imdbdatasets';
## DB connection
-$DB = new mysqli(DB_HOST, DB_USER,DB_PASSWORD, DB_NAME);
-if ($DB->connect_errno) exit("Can not connect to MySQL Server\n");
-$DB->set_charset("utf8mb4");
-$DB->query("SET collation_connection = 'utf8mb4_bin'");
+$DB = new mysqli(DB_HOST, DB_USERNAME,DB_PASSWORD, DB_NAME);
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT;
+if ($DB->connect_errno) exit('Can not connect to MySQL Server');
+$DB->set_charset("utf8mb4");
+$DB->query("SET collation_connection = 'utf8mb4_0900_ai_ci'");
require_once 'lib/import.abstract.class.php';
<?php
/**
* dolphin. Collection of useful PHP skeletons.
- * Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+ * Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
* Import the data from imdb dataset name.basics.tsv
*/
class NameBasics extends TSVImport {
+
/**
* @inheritDoc
*/
- public function setup() {
+ public function setup(): void {
$this->_db_table_name = 'name_basics';
$this->_db_table_crate_str = "CREATE TABLE `".$this->_db_table_name."` (
-`nconst` varchar(16) COLLATE utf8mb4_bin NOT NULL,
-`primaryName` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`nconst` char(10) COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`primaryName` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`birthYear` year NOT NULL,
`deathYear` year NOT NULL,
-`primaryProfession` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`knownForTitles` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`primaryProfession` varchar(254) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`knownForTitles` varchar(254) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
UNIQUE KEY `nconst` (`nconst`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin";
-
- if($this->_createFulltext) {
- $this->_db_table_after_import_query[] = "ALTER TABLE `" . $this->_db_table_name . "` ADD FULLTEXT (`primaryName`)";
- $this->_db_table_after_import_query[] = "OPTIMIZE TABLE `" . $this->_db_table_name . "`";
- }
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci";
}
/**
* @inheritDoc
*/
- public function queryValuePart($data) {
+ public function queryValuePart(array $data): string {
$ret = '';
if(!empty($data)) {
<?php
/**
* dolphin. Collection of useful PHP skeletons.
- * Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+ * Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
*/
class TitleAkas extends TSVImport {
- public function setup() {
+ public function setup(): void {
$this->_db_table_name = 'title_akas';
$this->_db_table_crate_str = "CREATE TABLE `".$this->_db_table_name."` (
-`titleId` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`titleId` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`ordering` int NOT NULL,
-`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`region` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`language` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`types` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`attributes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`region` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`language` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`types` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`attributes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`isOriginalTitle` tinyint(1) NOT NULL,
UNIQUE KEY `titleId` (`titleId`,`ordering`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin";
-
- if($this->_createFulltext) {
- $this->_db_table_after_import_query[] = "ALTER TABLE `" . $this->_db_table_name . "` ADD FULLTEXT (`title`)";
- $this->_db_table_after_import_query[] = "OPTIMIZE TABLE `" . $this->_db_table_name . "`";
- }
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci";
}
- public function queryValuePart($data) {
+ public function queryValuePart(array $data): string {
$ret = '';
if(!empty($data)) {
<?php
/**
* dolphin. Collection of useful PHP skeletons.
- * Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+ * Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
/**
* @inheritDoc
*/
- public function setup() {
+ public function setup(): void {
$this->_db_table_name = 'title_basics';
$this->_db_table_crate_str = "CREATE TABLE `".$this->_db_table_name."` (
-`tconst` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`titleType` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`primaryTitle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`originalTitle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`tconst` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`titleType` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`primaryTitle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`originalTitle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`isAdult` tinyint(1) NOT NULL,
-`startYear` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`endYear` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`startYear` year NOT NULL,
+`endYear` year NOT NULL,
`runtimeMinutes` int NOT NULL,
-`genres` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`genres` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
UNIQUE KEY `tconst` (`tconst`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin";
-
- if($this->_createFulltext) {
- $this->_db_table_after_import_query[] = "ALTER TABLE `" . $this->_db_table_name . "` ADD FULLTEXT (`primaryTitle`)";
- $this->_db_table_after_import_query[] = "ALTER TABLE `" . $this->_db_table_name . "` ADD FULLTEXT (`originalTitle`)";
- $this->_db_table_after_import_query[] = "OPTIMIZE TABLE `" . $this->_db_table_name . "`";
- }
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci";
}
/**
* @inheritDoc
*/
- public function queryValuePart($data) {
+ public function queryValuePart(array $data): string {
$ret = '';
if(!empty($data)) {
<?php
/**
* dolphin. Collection of useful PHP skeletons.
- * Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+ * Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
/**
* @inheritDoc
*/
- public function setup() {
+ public function setup(): void {
$this->_db_table_name = 'title_crew';
$this->_db_table_crate_str = "CREATE TABLE `".$this->_db_table_name."` (
-`tconst` varchar(16) COLLATE utf8mb4_bin NOT NULL,
-`directors` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`writers` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`tconst` char(10) COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`directors` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`writers` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
UNIQUE KEY `tconst` (`tconst`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin";
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci";
}
/**
* @inheritDoc
*/
- public function queryValuePart($data) {
+ public function queryValuePart(array $data): string {
$ret = '';
if(!empty($data)) {
return $ret;
}
-}
\ No newline at end of file
+}
<?php
/**
* dolphin. Collection of useful PHP skeletons.
-* Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+* Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
/**
* @inheritDoc
*/
- public function setup() {
+ public function setup(): void {
$this->_db_table_name = 'title_episode';
$this->_db_table_crate_str = "CREATE TABLE `".$this->_db_table_name."` (
-`tconst` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`parentTconst` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`tconst` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`parentTconst` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`seasonNumber` int NOT NULL,
`episodeNumber` int NOT NULL,
UNIQUE KEY `tconst` (`tconst`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin";
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci";
}
/**
* @inheritDoc
*/
- public function queryValuePart($data) {
+ public function queryValuePart(array $data): string {
$ret = '';
if(!empty($data)) {
<?php
/**
* dolphin. Collection of useful PHP skeletons.
-* Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+* Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
/**
* @inheritDoc
*/
- public function setup() {
+ public function setup(): void {
$this->_db_table_name = 'title_principals';
$this->_db_table_crate_str = "CREATE TABLE `".$this->_db_table_name."` (
-`tconst` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`tconst` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`ordering` int NOT NULL,
-`nconst` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`category` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`job` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`characters` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`nconst` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`category` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`job` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`characters` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
UNIQUE KEY `tconst` (`tconst`,`ordering`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin";
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci";
}
/**
* @inheritDoc
*/
- public function queryValuePart($data) {
+ public function queryValuePart(array $data): string {
$ret = '';
if(!empty($data)) {
<?php
/**
* dolphin. Collection of useful PHP skeletons.
- * Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+ * Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
/**
* @inheritDoc
*/
- public function setup() {
+ public function setup():void {
$this->_db_table_name = 'title_ratings';
$this->_db_table_crate_str = "CREATE TABLE `".$this->_db_table_name."` (
-`tconst` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
-`averageRating` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
+`tconst` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
+`averageRating` decimal(10,1) NOT NULL,
`numVotes` int NOT NULL,
UNIQUE KEY `tconst` (`tconst`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin";
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci";
}
/**
* @inheritDoc
*/
- public function queryValuePart($data) {
+ public function queryValuePart(array $data):string {
$ret = '';
if(!empty($data)) {
<?php
/**
* dolphin. Collection of useful PHP skeletons.
- * Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+ * Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
*
* @param string $input The string to check
* @param string $mode How the string should be checked
- * @param mixed $limit If int given the string is checked for length
+ * @param false|mixed $limit If int given the string is checked for length
*
* @return bool
*/
- static function validate($input,$mode='text',$limit=false) {
+ static function validate(string $input, string $mode='text', mixed $limit=false): bool {
// check if we have input
$input = trim($input);
<?php
/**
* dolphin. Collection of useful PHP skeletons.
- * Copyright (C) 2013-2020 Johannes 'Banana' Keßler
+ * Copyright (C) 2013-2025 Johannes 'Banana' Keßler
*
* https://www.bananas-playground.net
*
abstract class TSVImport {
/**
- * @var $_DB object database
+ * @var Mysqli database
*/
- protected $_DB;
+ protected Mysqli $_DB;
/**
- * @var $_db_table_name string Tablename
+ * @var string The tablename
*/
- protected $_db_table_name;
+ protected string $_db_table_name;
/**
- * @var $_db_table_crate_str string Creation SQL for this table
+ * @var string Creation SQL for this table
*/
- protected $_db_table_crate_str;
-
- /**
- * @var bool Create fulltext index or not
- */
- protected $_createFulltext = BUILD_INDEX;
+ protected string $_db_table_crate_str;
/**
* @var array Queries to be run after the import
*/
- protected $_db_table_after_import_query = array();
+ protected array $_db_table_after_import_query = array();
/**
* TSVImport constructor.
*
* @param $db Mysqli database object
*/
- public function __construct($db) {
+ public function __construct(Mysqli $db) {
$this->_DB = $db;
$this->setup();
}
* set $_db_table_name $_db_table_crate_str
* @return void
*/
- abstract public function setup();
+ abstract public function setup(): void;
/**
* Creates the values port of the insert query
* for the values insert query
* @return string
*/
- abstract public function queryValuePart($data);
+ abstract public function queryValuePart(array $data): string;
/**
- * @param $file The TSV file to import
+ * @param $file string The TSV file to import
* @return bool
*/
- public function import($file) {
+ public function import(string $file): bool {
$ret = false;
echo "Starting to import $file with ".get_class($this)." class\n";
+ // set some settings for better import
+ $this->_DB->query("SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, AUTOCOMMIT = 0");
+ $this->_DB->query("SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS = 0");
+ $this->_DB->query("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0");
+ $this->_DB->query('SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"');
+ $this->_DB->begin_transaction();
+
$check = $this->_checkTable();
- if($check == false) {
+ if(!$check) {
echo "Creating needed database table: $this->_db_table_name \n";
$this->_createTable();
}
$queryStrStart = "INSERT IGNORE INTO `".$this->_db_table_name."` VALUES ";
$queryStr = '';
$total=0;
+ $nf = new NumberFormatter("en", NumberFormatter::PERCENT);
// some files have very long lines... otherwise a length value would be perfect
while (($data = fgetcsv($handle, 0, "\t")) !== FALSE) {
- // invalid lines.
$_p = $this->queryValuePart($data);
if(!empty($_p)) {
$queryStr .= $this->queryValuePart($data).",";
$total++;
+ // execute if long enough
if(isset($queryStr[1000000])) {
try {
$this->_DB->query($queryStrStart . trim($queryStr, ","));
} catch(Exception $e) {
echo "Failure in executing the query. ".$e->getMessage()."\n";
var_dump($queryStr);
+ $this->_DB->rollback();
exit();
- return false;
}
}
-
- echo "Inserting: $total/$linesInFile\r";
+ echo "Inserting: $total/$linesInFile ",$nf->format(($total / $linesInFile)),"\r";
}
}
+ // make sure the last query is also executed.
if(!empty($queryStr)) {
- $this->_DB->query($queryStrStart.trim($queryStr,","));
- echo "\n";
+ try {
+ $this->_DB->query($queryStrStart.trim($queryStr,","));
+ echo "\n";
+ } catch(Exception $e) {
+ echo "Failure in executing the query. ".$e->getMessage()."\n";
+ var_dump($queryStr);
+ $this->_DB->rollback();
+ exit();
+ }
}
fclose($handle);
- echo "Import complete. Inserted $total rows\n";
+
+ echo "Inserted $total rows\n";
+
if(!empty($this->_db_table_after_import_query)) {
echo "Executing after import stuff\n";
foreach ($this->_db_table_after_import_query as $k=>$v) {
echo "Done\n";
}
$ret = true;
+ } else {
+ echo "Can not open file $file\n";
}
} else {
echo "Filename empty\n";
}
+ // end import queries and reset to original values
+ echo "Reset import changed settings...\n";
+ $this->_DB->query('SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS');
+ $this->_DB->query('SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS');
+ $this->_DB->query('SET AUTOCOMMIT = @OLD_AUTOCOMMIT');
+ $this->_DB->commit();
+
+ echo "Import complete.\n";
+
return $ret;
}
*
* @return bool
*/
- protected function _checkTable() {
+ protected function _checkTable(): bool {
$ret = false;
$queryStr = "SELECT count(*) AS amount
*
* @return bool
*/
- protected function _createTable() {
+ protected function _createTable(): bool {
$ret = false;
try {
* Count the file lines.
* Used for user info
*
- * @param $file
+ * @param $file string
* @return int
*/
- protected function _linesInFile($file) {
+ protected function _linesInFile(string $file): int {
$file = new \SplFileObject($file, 'r');
$file->seek(PHP_INT_MAX);
return $file->key();
}
-
}