Excel to sql
можно ли занести в базу данные из экселя?
посмотрел в и-нете, но толком не понял реализации этого метода.
не подскажите ли кто-нть пошагово, как это можно сделать, как говориться, на пальцах. Может есть для этого какие-нть проги?
В phpmyadmin я нашёл как внести данные в таблицу из файла, но создать файл не получается, а забивать его ручками не устраивает. Хотелось бы услышать способы заноса данных в готовую таблицу и вариант, когда таблица создаётся на основе экселевского документа.
Заранее спасибо!
1. Создал макрос в VB
Dim i As Integer
Open "Date.sql" For Output As #1
i = 8
Do While (Cells(i, 2) <> "")
Print #1, Cells(i, 2); "|"; Cells(i, 3); "|"; Cells(i, 4)
i = i + 1
Loop
Close #1
Здесь читаются данные из столбцов и записываются в файл, из которого будем их брать и вносить в БД.
2. Теперь пишем код на php
$file="Date.sql";
$link = mysql_connect("localhost");
mysql_select_db("base", $link);
if (file_exists($file))
{
$fh=fopen($file, "r");
while (!feof($fh)):
$line=fgets($fh, 4096);
$elements=explode("|", $line);
$i=0;
foreach($elements as $element){
$Str[$i]=$element;
$i++;
}
$sql="INSERT INTO kompl ( name, gar, cena) values ('$Str[0]', '$Str[1]', '$Str[2]')";
mysql_query($sql);
echo $Str[0].'
';
endwhile;
fclose($fh);
}
mysql_close($link);
вроде всё нормально вносится в БД.
3. И вывод из БД
$link = mysql_connect("localhost");
mysql_select_db("base", $link);
$result = mysql_query("SELECT * FROM kompl", $link);
$num_rows = mysql_num_rows($result);
echo "Получено строк: $num_rows\n";
$sql = 'SELECT * FROM kompl WHERE 1';
echo "<table border=0 align=center width=100%>";
for($i=0;$i<$num_rows;$i++)
{
mysql_data_seek($result,$i);
$arr_guest=mysql_fetch_array($result);
echo "<tr bgcolor=$font><td>";
echo "<td >".$arr_guest["name"]."</td>";
echo "<td>".$arr_guest["gar"]."</td>";
echo "<td>".$arr_guest["cena"]."</td>";
mysql_close($link);
А уже от себя при помощи phpmyadmin я собираюсь экспортировать таблицу и загружать её на хост.
Жду ваших замечаний и вот несколько новых вопросов:
после того, как вношу данные 1 раз и отображаю их всё отображается нормально. А вот если очистить БД и внести данные ещё раз, то они начинают отображаться в разноброс.
Вот код очистки:
$link = mysql_connect("localhost");
mysql_select_db("base", $link);
$sql="DELETE FROM kompl WHERE 1";
mysql_query($sql);
Print "Таблица kompl очищена";
mysql_close($link);
Если же делаю какие-нибудь изменения в структуре таблицы через phpmyadmin, то когда вношу данные, опять все нормально, но опять же на один раз:(
А вот теперь найди программу EMS MySQL Manager 2
и не парься больше.
-=J=-