Pages 1 2 Next
You must login or register to post a reply
- Registered: 2009-09-26
- Posts: 16
Topic: Import iš tekstinio failo į mysql
Sveiki. Turiu šiokią tokią problemėlę. Turiu import scriptą, kuris duomenis iš tekstinio failo perkelia į duombazę. Tačiau vykdant scriptą įsikelia tik maža dalis duomenų. Gal žinote kas negerai? P.S iš 18000 eilučių importuojama 1800.
- From: Vilnius
- Registered: 2008-06-11
- Posts: 1,254
Re: Import iš tekstinio failo į mysql
Tai import skriptas parašytas netinkamai arba duomenų bazės schema netinkama.
MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer
- Registered: 2009-09-26
- Posts: 16
Re: Import iš tekstinio failo į mysql
kai bandau importint meta šį errorą
Fatal error: Out of memory (allocated 356777984) (tried to allocate 8001 bytes) in /home/euromanas/domains/fifa-pro.xz.lt/public_html/import_players.php on line 49
- Registered: 2009-09-26
- Posts: 16
Re: Import iš tekstinio failo į mysql
<?php
ini_set("memory_limit","512M");
// nbanba
require_once "maincore.php";
$table_name = "zaidejai";
$file_name = "players.txt";
class CsvImporter {
private $fp;
private $parse_header;
private $header;
private $delimiter;
private $length;
function __construct($file_name, $parse_header=false, $delimiter="\t", $length=8000)
{
$this->fp = fopen($file_name, "r");
$this->parse_header = $parse_header;
$this->delimiter = $delimiter;
$this->length = $length;
$this->lines = $lines;
if ($this->parse_header)
{
$this->header = fgetcsv($this->fp, $this->length, $this->delimiter);
}
}
function __destruct()
{
if ($this->fp)
{
fclose($this->fp);
}
}
function get($max_lines=0)
{
$data = array();
if ($max_lines > 0)
$line_count = 0;
else
$line_count = -1;
while ($line_count < $max_lines && ($row = fgetcsv($this->fp, $this->length, $this->delimiter)) !== FALSE)
{
if ($this->parse_header)
{
foreach ($this->header as $i => $heading_i)
{
$row_new[$heading_i] = $row[$i];
}
$data[] = $row_new;
}
else
{
$data[] = $row;
}
if ($max_lines > 0)
$line_count++;
}
return $data;
}
}
$importer = new CsvImporter($file_name, true);
while($details = $importer->get(30000)) {
dbquery("INSERT INTO ".$table_name." VALUES ()");
$result = dbquery("SELECT * FROM ".$table_name);
$countcols = count(dbarray($result));
dbquery("TRUNCATE TABLE ".$table_name);
$countrows = count($details);
for ($k = 0; $k < $countrows; ++$k) {
$values = "";
$i = 0;
foreach ($details[$k] as &$value) {
++$i;
$countrecs = count($details[0]);
$countdiff = $countcols - $countrecs;
$value = iconv("UTF-8", "windows-1257", $value);
if ($i == $countrecs) {
$values .= "'".$value."'";
for ($j = 0; $j < $countdiff; ++$j) {
$values .= ", ''";
}
} else {
$values .= "'".$value."', ";
}
}
dbquery("INSERT INTO ".$table_name." VALUES (".$values.")");
}
}
?>
- Registered: 2011-01-04
- Posts: 466
Re: Import iš tekstinio failo į mysql
o php.ini faile nustatytas dydis memory_limit is defaulto?
var_dump(0 == 'tekstas'); // TRUE. ar zinai kodel? :)
- Registered: 2009-09-26
- Posts: 16
Re: Import iš tekstinio failo į mysql
kur php.ini rast galima ?
- Registered: 2011-01-04
- Posts: 466
Re: Import iš tekstinio failo į mysql
phpinfo(); ir ziuri kur randasi.
var_dump(0 == 'tekstas'); // TRUE. ar zinai kodel? :)
- Registered: 2009-09-26
- Posts: 16
Re: Import iš tekstinio failo į mysql
bet nėra tokios direktorijos FTP. Naudoju serveriai.lt
- Registered: 2011-01-04
- Posts: 466
Re: Import iš tekstinio failo į mysql
tai ikelinek mazais kiekiais. gal kas tures geresniu ideju nei mano nes ten manau bus koks 64mb limitas gal dar maziau
var_dump(0 == 'tekstas'); // TRUE. ar zinai kodel? :)
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
756
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
816
- minde
- Administrator
- Offline
- Registered: 2006-06-14
- Posts: 4,003
Re: Import iš tekstinio failo į mysql
...
$importer->get(30000))
...
Pabandyk sumažint skaičių ...
O šiaip tai nesuprantu kam taip sudėtingai daryti importavimą iš CSV, kai MySQL'e galima tai atlikti per vieną užklausą ir duomenis tiesiai suimportuoti iš failo be jokio PHP.
Netgi ir dirbant su PHP yra specialios funkcijos darbui su CSV formatu.
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
756
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
816
- Registered: 2011-01-04
- Posts: 466
Re: Import iš tekstinio failo į mysql
minde wrote:...
$importer->get(30000))
...
Pabandyk sumažint skaičių ...
O šiaip tai nesuprantu kam taip sudėtingai daryti importavimą iš CSV, kai MySQL'e galima tai atlikti per vieną užklausą ir duomenis tiesiai suimportuoti iš failo be jokio PHP.
Netgi ir dirbant su PHP yra specialios funkcijos darbui su CSV formatu.
o del memory_limit buvau kazkiek teisus ar cia visai nusisnekejau?
var_dump(0 == 'tekstas'); // TRUE. ar zinai kodel? :)
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
816
- minde
- Administrator
- Offline
- Registered: 2006-06-14
- Posts: 4,003
Re: Import iš tekstinio failo į mysql
Na teisus tiek, kad nuskaitomi duomenys + kiti veiksmai netelpa į PHP skirtą atmintį.
Atminties limito padidinimas padeda jeigu turi tokias teisės ir tiek atminties, kiek reikia (kartais su labai kreivu kodu atminties padidinimas nieko neišspręs, nes programa gali jos naudoti begalo daug).
- Registered: 2011-07-10
- Posts: 1
Re: Import iš tekstinio failo į mysql
kaip ta memory edit pakeist ir kaip csv importint jei turi tik txt faila
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
816
- minde
- Administrator
- Offline
- Registered: 2006-06-14
- Posts: 4,003
Re: Import iš tekstinio failo į mysql
Jeigu tame txt faile iš tikro yra CSV formatas, tai sukelk tą failą per FTP į serverį, o tada per phpMyAdmin prisidetink komandą "LOAD DATA ..."
Pilna dokumentacija: http://dev.mysql.com/doc/refman/5.1/en/load-data.html kur rasi kaip nustatyti visus parametrus, kad teisingai sukeltų duomenis.
Taip pat iki kokio dydžio buvai sumažinęs mano minėta skaičių?
15 Reply by VYCKA 2011-07-11 09:56:12 (edited by VYCKA 2011-07-11 10:07:01)
- Registered: 2009-09-26
- Posts: 16
Re: Import iš tekstinio failo į mysql
iki 5000 sumazinau tada kelia. bet ir tai sukelia tik 2000 daugiau nebedade i table
- minde
- Administrator
- Offline
- Registered: 2006-06-14
- Posts: 4,003
Re: Import iš tekstinio failo į mysql
čiia veikia du limitai:
a) atminties apribojimas, kas neleidžia nuskaityti didelio duomenų kiekio kiekvienoje porcijoje;
b) laiko limitas, kas neleidžia scriptui būti vykdimam ilgiau nei kažkiek sekundžių (gal 30);
Todėl pasinaudok LOAD DATA komanda... arba susikelk viską lokaliame kompe, kur nėr atminties/laiko apribojimų, o tada suimportuosi jau SQL failą.
Taip pat atliekant importus su dideliais duomenų kiekiais, kur duomenų schemoje yra ribojantys raktai - patartina tuos raktus/indeksus atjungti, o įjungti tik po importo pabaigos.
- Registered: 2009-09-26
- Posts: 16
Re: Import iš tekstinio failo į mysql
tarkim darausi CSV failą. sintaksę visą beveik padariau, bet pačiame eilutės priekyje neišeis replacint skaičiaus :D. Gal žinote kaip galėčiau kiekvienos eilutės pradžioje pridėti " ?
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
756
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
816
- minde
- Administrator
- Offline
- Registered: 2006-06-14
- Posts: 4,003
Re: Import iš tekstinio failo į mysql
VYCKA wrote:bet pačiame eilutės priekyje neišeis replacint skaičiaus :D
Kodėl "neišeis"?
VYCKA wrote:Gal žinote kaip galėčiau kiekvienos eilutės pradžioje pridėti " ?
Sukonkretink ką, kokioje aplinkoje tu nori padaryt...
19 Reply by VYCKA 2011-07-11 10:39:21 (edited by VYCKA 2011-07-11 10:39:51)
- Registered: 2009-09-26
- Posts: 16
Re: Import iš tekstinio failo į mysql
pasidariau taip naudojant notepad++:
1;388;9;32;2009;0
1;805;12;32;2012;0
1;7826;11;29;2014;0
1;8473;7;32;2010;0
1;51105;10;7;2012;0
1;113343;1;0;2010;0
1;134783;27;32;2011;0
1;134906;6;33;2010;0
1;147777;23;31;2012;0
1;157304;5;4;2013;0
ar gerai?
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
756
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
811
Deprecated: Function create_function() is deprecated in
/home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line
816
- minde
- Administrator
- Offline
- Registered: 2006-06-14
- Posts: 4,003
Re: Import iš tekstinio failo į mysql
Man asmeniškai jokio skirtumo (-;
Pages 1 2 Next
You must login or register to post a reply