Ка запихать огромный файл в MySql

Как вариант использовать программку MySQL Workbench.
Качать отсюда Для просмотра ссылки Войди или Зарегистрируйся
Инструкция имеется в гугле.
CSV - 1.5 гига импортирует на раз

или с помошью скрипта

$hostname = "localhost";
$username = "root";
$password = "**";
$dbName = "***";

$userstable = "admin";

MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");

@mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");


mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
mysql_query (" LOAD DATA INFILE '/home/user/file.txt' INTO TABLE tbl_name COLUMNS TERMINATED BY '|' (`key`,value) LINES TERMINATED BY '\r\n'");
 
Последнее редактирование:
Я в шоке,неужели никто не слышал об отечественной sypex dumper Для просмотра ссылки Войди или Зарегистрируйся
Эта программа создана для импорта/экспорта баз данных в самых экстремальных условиях. К тому же скрипт имеет отличную документацию, потратив на ее изучение полчаса, вы постоянно будете использовать sypex для своих нужд. Это и оптимизация, и удаление не нвжных записей, одним словом все-все. И не надо больше ничего придумывать и мудрить
 
sypex dumper работает с sql файлами, а в исходнике txt
 
Короче я утилитой для текстовых файлов разделил основной файл на несколько файлов по 100к строчек и потихоньку всё запихнул

Всего строчек 1 200 000


Стандартный блокнот сразу зависал у меня, а notepad++ спокойно открыл
 
заливал в mysql базу Пастухова на 180млн таким скриптом

<?php
// Путь к файлу
$filename = "/home/user/text.txt";
set_time_limit(0);


mysql_connect("localhost","user","111")
or die("Could not connect: " . mysql_error());
mysql_query('SET NAMES utf8');

mysql_select_db("mus_door");

// Открываем файл для чтения и получаем дискриптор файла
if (($handle = fopen($filename, "r")) !== FALSE)
{
// Бегаем по файлу пока не дойдем до конца файла
while (!feof($handle))
//while ($i <20)
{
// Читаем одну строку из файла
$line = fgets($handle);
// Если строка существует, работаем с ней
if ($line !== FALSE)
{
$line=trim($line);
mysql_query("INSERT INTO `keys` (`key`) VALUES ('".$line."')");
}
//$i++;
}
// Закрываем дискриптор файла
fclose($handle);
}
else
{
// Если не смогли открыть файл
// Неправильный путь или нет прав на чтение
echo "File not exist";
}


заливалось долго, но результат достигнут
 
Назад
Сверху