Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: переконвертация Excel файла в SQL файл
 
 автор: новичек   (22.07.2005 в 23:33)
 
 

подскажите, можно ли екселовский файл переконвертировать в SQL ?

   
 
 автор: cheops   (23.07.2005 в 01:18)   письмо автору
 
   для: новичек   (22.07.2005 в 23:33)
 

Обычно Excel-ский файл сохраняют как CSV-файл, который затем разбирают средствами PHP, как это описывается в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=4843.

   
 
 автор: новичек   (23.07.2005 в 21:09)
 
   для: cheops   (23.07.2005 в 01:18)
 

сделал как написано в темах
создал текстовый файл, даже что бы все было как там прокомментировал строки
вот такого вида он

 носов, незнайка,  // nnn
 лермонтов, поэма, //nnn
 пушкин, стихи, //nnn

структура таблицы

CREATE TABLE 'liter' (
  'id' int(11) NOT NULL auto_increment,
  'avtor' text NOT NULL,
  'name' text NOT NULL,
  UNIQUE KEY 'id' ('id')
)  AUTO_INCREMENT=1 ;


создал файл sq.php как было написано в одной из тем

<?php 
  
// Устанавливаем соединение с базой данных 
  
include "function.inc.php"
  
// Помещаем содержимое файла в массив $arr 
  // Одна строка файла - один элемент массива 
  
$arr file("text.txt"); 
  
// В цикле производим разбор каждой строки 
  // формируем многострочный INSERT-запрос 
  
$sql "INSERT INTO liter VALUES "
  
$i 1
  foreach(
$arr as $line
  { 
    
// Разбиваем строку по запятой 
    
$number explode(",",$line); 
    
// Уничтожаем последний элмемент с комментарием 
  //  unset($number[2]); 
    // Формируем строку многострочного INSERT (1,2,...,10) 
    
$order "($i,"
    foreach(
$number as $num
    { 
      
$order .= "$num,"
    } 
    
// Удаляем последнюю лишнюю запятую и 
    // добавляем закрывающую скобку 
    
$order substr($order,0,strlen($order) - 1).")"
    
$sql .= "$order,"
    
$i++; 
  } 
  
// Удаляем последнюю лишнюю запятую и 
  // добавляем закрывающую скобку 
  
$sql substr($sql,0,strlen($sql) - 1); 
  
// Выполняем SQL-запрос 
  
if(!mysql_query($sql)) 
  { 
    echo 
$sql."<br>"
    echo 
"Ошибка - ".mysql_error(); 
  } 
?> 


запускаю и нечего нет
не выдает ни ошибок ни заносит данные в БД
подскажите, что не так ?

   
 
 автор: cheops   (23.07.2005 в 23:55)   письмо автору
 
   для: новичек   (23.07.2005 в 21:09)
 

Так как у вас строки, то значение $num в переменной $order должно быть заключены в одиночные кавычки. Т.е. скрипт следует переписать следующим образом
<?php 
  
// Устанавливаем соединение с базой данных 
  
include "function.inc.php"
  
// Помещаем содержимое файла в массив $arr 
  // Одна строка файла - один элемент массива 
  
$arr file("text.txt"); 
  
// В цикле производим разбор каждой строки 
  // формируем многострочный INSERT-запрос 
  
$sql "INSERT INTO liter VALUES "
  
$i 1
  foreach(
$arr as $line
  { 
    
// Разбиваем строку по запятой 
    
$number explode(",",$line); 
    
// Уничтожаем последний элмемент с комментарием 
    
unset($number[2]); 
    
// Формируем строку многострочного INSERT (1,2,...,10) 
    
$order "($i,"
    foreach(
$number as $num
    { 
      
$order .= "'$num',"
    } 
    
// Удаляем последнюю лишнюю запятую и 
    // добавляем закрывающую скобку 
    
$order substr($order,0,strlen($order) - 1).")"
    
$sql .= "$order,"
    
$i++; 
  } 
  
// Удаляем последнюю лишнюю запятую и 
  // добавляем закрывающую скобку 
  
$sql substr($sql,0,strlen($sql) - 1); 
  echo 
$sql;
  
// Выполняем SQL-запрос 
  
if(!mysql_query($sql)) 
  { 
    echo 
$sql."<br>"
    echo 
"Ошибка - ".mysql_error(); 
  } 
?>

Причём следует раскомментировать строку unset($number[2]), иначе комментарии будут тоже добавляться в запрос. Результатом этого скрипта будет запрос
INSERT INTO liter VALUES (1,'носов',' незнайка'),(2,'лермонтов',' поэма'),(3,'пушкин',' стихи')

   
 
 автор: новичек   (24.07.2005 в 00:42)
 
   для: cheops   (23.07.2005 в 23:55)
 

поставил
не работает :(

   
 
 автор: cheops   (24.07.2005 в 12:29)   письмо автору
 
   для: новичек   (24.07.2005 в 00:42)
 

Вывидите запрос в окно браузера и попробуйте выполнить его в другом клиенте, например в phpMyAdmin.

   
 
 автор: новичек   (24.07.2005 в 12:45)
 
   для: cheops   (24.07.2005 в 12:29)
 

извините, не понял
какой запрос ввести в браузер ?

   
 
 автор: cheops   (24.07.2005 в 12:50)   письмо автору
 
   для: новичек   (24.07.2005 в 12:45)
 

SQL-запрос, который формирует скрипт
<?php
  
echo $sql;
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования