im posiadające bardzo kłopotliwe czas próby importowania dużego pliku csv do mysql na localhostImportowanie dużą csv do bazy danych mysql
CSV wynosi około 55 MB i ma około 750 tysięcy wierszy.
teraz ive uciekają się do napisania skryptu, który analizuje csv i składowisk wiersze 1 przez jeden
heres kodu:
$row = 1;
if (($handle = fopen("postal_codes.csv", "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++)
{
$arr = explode('|', $data[$c]);
$postcode = mysql_real_escape_string($arr[1]);
$city_name = mysql_real_escape_string($arr[2]);
$city_slug = mysql_real_escape_string(toAscii($city_name));
$prov_name = mysql_real_escape_string($arr[3]);
$prov_slug = mysql_real_escape_string(toAscii($prov_name));
$prov_abbr = mysql_real_escape_string($arr[4]);
$lat = mysql_real_escape_string($arr[6]);
$lng = mysql_real_escape_string($arr[7]);
mysql_query("insert into cities (`postcode`, `city_name`, `city_slug`, `prov_name`, `prov_slug`, `prov_abbr`, `lat`, `lng`)
values ('$postcode', '$city_name', '$city_slug', '$prov_name', '$prov_slug', '$prov_abbr', '$lat', '$lng')") or die(mysql_error());
}
}
fclose($handle);
}
problem jest ten trwa na wieki, aby wykonać ... wszelkie rozwiązania byłoby wspaniale.
Czy masz wskaźniki na stole? Jeśli tak, rozważ wstawianie indeksów wyłączonych i odbudowujących po zakończeniu. –
"Plik danych obciążenia mysql" może obsłużyć większość formatów CSV bezpośrednio: http://dev.mysql.com/doc/refman/5.1/en/load-data.html (szukaj "csv"). –