txt во sql

Член од
27 ноември 2005
Мислења
636
Поени од реакции
11
имам една текст датотека и во неа околу 200 000 записи. Како би можел овие записи да ги вметнам во некоја табела на sql база или може и во access база, при тоа овие записи немаат реден број во текст датотеката?
 

deXterche

тадаммм
Член од
12 февруари 2006
Мислења
4.920
Поени од реакции
941
Кажи нешто што е поспецифично за тие записи, како се поделени? Ако можеш (и ако не е тајна) постирај неколку реда, па ќе се смисли некое чаре.
 

Овердрајв

Модератор
Член од
5 ноември 2005
Мислења
4.255
Поени од реакции
569
Ако записите се секој во нов ред, тогаш е лесно..

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 записи ќе треба време.. да не го исклучиш :)
 

cYb3rc0re

~ место за реклама
Член од
3 мај 2005
Мислења
914
Поени од реакции
170
Кај мене околу 2000 записи ги внесуваше 1-2 минути, па за 200,000 записи ќе треба време.. да не го исклучиш :)
Ова може и да не му успее, пошто пхп-то е ограничено со временско извршување на одредена скрипта, или големина на SQL. Јас имав многу проблеми со бекап од 15 мб од MySQL база, да го вратам преку пхп, ама го решив тоа со MySQL administrator.

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

Најдобро е да ни стави дел од записот, па ќе дадеме предлози.
 
Член од
27 ноември 2005
Мислења
636
Поени од реакции
11
записите се на пример
id zapis
1 текст
2 друг текст
3 друг текст

Инаку станува збор за MS SQL база а не за MySQL. Уште не сум пробал со Access....
 

cYb3rc0re

~ место за реклама
Член од
3 мај 2005
Мислења
914
Поени од реакции
170
Епа тогаш најдобро е да ги импортираш во Аксес, има опции таму за да внесиш од текстуални датотеки, па после можеш да правиш што сакаш.

Другата опција е слично како П.Овердрајв, со тоа што би препорачал да ставиш ограничување колку записи да обработува одеднаш.
 
Член од
19 септември 2005
Мислења
5.616
Поени од реакции
180
Зависи како сакаш. Ако сакаш единечно внесување од Акцес во SQL можеш многу лесно, има Експорт алатка Акцесот, но ако сакаш да направиш функција (за директно онлајн да импортираш во база од CSV) имам направено едно кодче, супер работи...
 
Член од
27 ноември 2005
Мислења
636
Поени од реакции
11
Пѕуштај да видам... ма да мислам дека со Access ќе завршам работа...
Зависи како сакаш. Ако сакаш единечно внесување од Акцес во SQL можеш многу лесно, има Експорт алатка Акцесот, но ако сакаш да направиш функција (за директно онлајн да импортираш во база од CSV) имам направено едно кодче, супер работи...
 
Член од
27 август 2005
Мислења
783
Поени од реакции
7
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

На врв Bottom