From: Banana Date: Sun, 19 Oct 2025 15:40:24 +0000 (+0200) Subject: a small cleanup X-Git-Url: http://91.132.146.200/gitweb/?a=commitdiff_plain;h=d66e2dead35cd206eb12c0a030f645ffa509e342;p=dolphin.git a small cleanup Signed-off-by: Banana --- diff --git a/imdb-dataset-to-mysql/README b/imdb-dataset-to-mysql/README deleted file mode 100644 index a7d40da..0000000 --- a/imdb-dataset-to-mysql/README +++ /dev/null @@ -1,30 +0,0 @@ -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 diff --git a/imdb-dataset-to-mysql/READMEmd b/imdb-dataset-to-mysql/READMEmd new file mode 100644 index 0000000..d1e81dd --- /dev/null +++ b/imdb-dataset-to-mysql/READMEmd @@ -0,0 +1,23 @@ +# 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. diff --git a/imdb-dataset-to-mysql/api.php b/imdb-dataset-to-mysql/api.php index 3b500d7..f1673ae 100644 --- a/imdb-dataset-to-mysql/api.php +++ b/imdb-dataset-to-mysql/api.php @@ -1,7 +1,7 @@ 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(); diff --git a/imdb-dataset-to-mysql/import.php b/imdb-dataset-to-mysql/import.php index 8dc74de..f83a902 100644 --- a/imdb-dataset-to-mysql/import.php +++ b/imdb-dataset-to-mysql/import.php @@ -1,7 +1,7 @@ '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'; diff --git a/imdb-dataset-to-mysql/lib/NameBasics.class.php b/imdb-dataset-to-mysql/lib/NameBasics.class.php index 0834c1b..58b7535 100644 --- a/imdb-dataset-to-mysql/lib/NameBasics.class.php +++ b/imdb-dataset-to-mysql/lib/NameBasics.class.php @@ -1,7 +1,7 @@ _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)) { diff --git a/imdb-dataset-to-mysql/lib/TitleAkas.class.php b/imdb-dataset-to-mysql/lib/TitleAkas.class.php index 575b9ff..fa813f4 100644 --- a/imdb-dataset-to-mysql/lib/TitleAkas.class.php +++ b/imdb-dataset-to-mysql/lib/TitleAkas.class.php @@ -1,7 +1,7 @@ _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)) { diff --git a/imdb-dataset-to-mysql/lib/TitleBasics.class.php b/imdb-dataset-to-mysql/lib/TitleBasics.class.php index 3af631c..9f0c8e7 100644 --- a/imdb-dataset-to-mysql/lib/TitleBasics.class.php +++ b/imdb-dataset-to-mysql/lib/TitleBasics.class.php @@ -1,7 +1,7 @@ _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)) { diff --git a/imdb-dataset-to-mysql/lib/TitleCrew.class.php b/imdb-dataset-to-mysql/lib/TitleCrew.class.php index 58e8571..aa22b73 100644 --- a/imdb-dataset-to-mysql/lib/TitleCrew.class.php +++ b/imdb-dataset-to-mysql/lib/TitleCrew.class.php @@ -1,7 +1,7 @@ _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)) { @@ -51,4 +51,4 @@ UNIQUE KEY `tconst` (`tconst`) return $ret; } -} \ No newline at end of file +} diff --git a/imdb-dataset-to-mysql/lib/TitleEpisode.class.php b/imdb-dataset-to-mysql/lib/TitleEpisode.class.php index 2987dc4..00c9c2a 100644 --- a/imdb-dataset-to-mysql/lib/TitleEpisode.class.php +++ b/imdb-dataset-to-mysql/lib/TitleEpisode.class.php @@ -1,7 +1,7 @@ _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)) { diff --git a/imdb-dataset-to-mysql/lib/TitlePrincipals.class.php b/imdb-dataset-to-mysql/lib/TitlePrincipals.class.php index 9e434f2..7a4baaa 100644 --- a/imdb-dataset-to-mysql/lib/TitlePrincipals.class.php +++ b/imdb-dataset-to-mysql/lib/TitlePrincipals.class.php @@ -1,7 +1,7 @@ _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)) { diff --git a/imdb-dataset-to-mysql/lib/TitleRatings.class.php b/imdb-dataset-to-mysql/lib/TitleRatings.class.php index 3c59de3..7228d1a 100644 --- a/imdb-dataset-to-mysql/lib/TitleRatings.class.php +++ b/imdb-dataset-to-mysql/lib/TitleRatings.class.php @@ -1,7 +1,7 @@ _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)) { diff --git a/imdb-dataset-to-mysql/lib/helper.class.php b/imdb-dataset-to-mysql/lib/helper.class.php index 564c755..a3e3948 100644 --- a/imdb-dataset-to-mysql/lib/helper.class.php +++ b/imdb-dataset-to-mysql/lib/helper.class.php @@ -1,7 +1,7 @@ _DB = $db; $this->setup(); } @@ -62,7 +57,7 @@ abstract class TSVImport { * 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 @@ -73,19 +68,26 @@ abstract class TSVImport { * 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(); } @@ -104,14 +106,15 @@ abstract class TSVImport { $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, ",")); @@ -119,21 +122,30 @@ abstract class TSVImport { } 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) { @@ -144,11 +156,22 @@ abstract class TSVImport { 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; } @@ -158,7 +181,7 @@ abstract class TSVImport { * * @return bool */ - protected function _checkTable() { + protected function _checkTable(): bool { $ret = false; $queryStr = "SELECT count(*) AS amount @@ -185,7 +208,7 @@ abstract class TSVImport { * * @return bool */ - protected function _createTable() { + protected function _createTable(): bool { $ret = false; try { @@ -205,13 +228,12 @@ abstract class TSVImport { * 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(); } - }