txt во sql

  • Креатор на темата Креатор на темата Dejan]
  • Време на започнување Време на започнување
Член од
27 ноември 2005
Мислења
636
Поени од реакции
11
Веб-сајт
www.macedonium.org
имам една текст датотека и во неа околу 200 000 записи. Како би можел овие записи да ги вметнам во некоја табела на sql база или може и во access база, при тоа овие записи немаат реден број во текст датотеката?
 
Кажи нешто што е поспецифично за тие записи, како се поделени? Ако можеш (и ако не е тајна) постирај неколку реда, па ќе се смисли некое чаре.
 
Ако записите се секој во нов ред, тогаш е лесно..

PHP:
<?php
$korisnik = "";
$lozinka = "";
$baza = "";
$adresa = "";

$datoteka = "bla.txt";
$podatoci = @file($datoteka);
$server = mysql_connect($adresa, $korisnik, $lozinka) or die(mysql_error());
$vrska = mysql_select_db($baza); 
for ($i=0; $i<sizeof($podatoci); $i++){
    $sql = "INSERT INTO `tabela` (`id`, `podatok`) VALUES ('$i', '$podatoci[$i]')";
    $vnes = mysql_query($sql) or die(mysql_error());
}
mysql_close() or die(mysql_error());
?>
Ги чита податоците од фајлот, ги става во низа, и после со for loop ги сместува еден по еден во MySQL база и им дава реден број. Кај мене околу 2000 записи ги внесуваше 1-2 минути, па за 200,000 записи ќе треба време.. да не го исклучиш :)
 
Кај мене околу 2000 записи ги внесуваше 1-2 минути, па за 200,000 записи ќе треба време.. да не го исклучиш :)
Ова може и да не му успее, пошто пхп-то е ограничено со временско извршување на одредена скрипта, или големина на SQL. Јас имав многу проблеми со бекап од 15 мб од MySQL база, да го вратам преку пхп, ама го решив тоа со MySQL administrator.

За ова најверојатно е најдобро да ги стави во Аксес база, како CSV (comma separated), па после да види што ќе прави понатака (во зависност што му треба).

Најдобро е да ни стави дел од записот, па ќе дадеме предлози.
 
записите се на пример
id zapis
1 текст
2 друг текст
3 друг текст

Инаку станува збор за MS SQL база а не за MySQL. Уште не сум пробал со Access....
 
Епа тогаш најдобро е да ги импортираш во Аксес, има опции таму за да внесиш од текстуални датотеки, па после можеш да правиш што сакаш.

Другата опција е слично како П.Овердрајв, со тоа што би препорачал да ставиш ограничување колку записи да обработува одеднаш.
 
Зависи како сакаш. Ако сакаш единечно внесување од Акцес во SQL можеш многу лесно, има Експорт алатка Акцесот, но ако сакаш да направиш функција (за директно онлајн да импортираш во база од CSV) имам направено едно кодче, супер работи...
 
Пѕуштај да видам... ма да мислам дека со Access ќе завршам работа...
Зависи како сакаш. Ако сакаш единечно внесување од Акцес во SQL можеш многу лесно, има Експорт алатка Акцесот, но ако сакаш да направиш функција (за директно онлајн да импортираш во база од CSV) имам направено едно кодче, супер работи...
 
Dejan];905480 напиша:
записите се на пример
id zapis
1 текст
2 друг текст
3 друг текст

Инаку станува збор за MS SQL база а не за MySQL. Уште не сум пробал со Access....
Наједноставно решение ти е ќе си отвориш Query Analyzer и „рачно“ ќе ги импортираш податоците

Прво креирај ја табелата каде сакаш да ги импортираш
Код:
CREATE TABLE dbo.Rezultati
(
 id int NOT NULL,
 zapis varchar(5000)
)
потоа
Код:
BULK INSERT dbo.Rezultati
FROM 'C:\zapisi.txt'
WITH 
(
  FIELDTERMINATOR =' '
)
За FIELDTERMINATOR меѓу наводниците ќе го ставиш карактерот кој ги „разделува“ полињата id и zapis. Најчесто е запирка, некогаш е таб (\t), али ти стави го тој како што е кај тебе у фајлот
Повеќе информации за BULK INSERT овде
 

Kajgana Shop

Back
На врв Bottom