X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Конвертация данных БД, есть старый формат -> нужен новый формат
wmaccel
wmaccel
Topic Starter сообщение 31.1.2011, 15:17; Ответить: wmaccel
Сообщение #1


Нужно конвертировать таблицу в базе Mysql.

Немного модернизировал старую таблицу и теперь не могу перенести данные из старой в новую.

Имеется таблица users с полями:

id | login | password | set1 | set2 | set3 | email | name | name1 | date | text | label

где поле date в формате: 00.00.00 (число, месяц, год)

Нужно конвертировать в таблицу:

id | time | login |password | set1 | set2 | set3 | set4 | email | name | name1 | label

поле time должно быть в секундах

Нужен как я понимаю небольшой скрипт для этого, но сам я написать не могу, так как не умею.

Очень прошу помочь реализовать.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 31.1.2011, 15:51; Ответить: ZiTosS
Сообщение #2


phpnoob, попробуем уточнить, в новой таблице:
1) появились новые поля - time, set4
2) пропали поля - text, date

Как я понимаю, поле date никак не связано с полем time, т.к. date это дата, time это время.
Поля set4 и text, как я понимаю, так же не связаны друг с другом.
Я всё правильно понял?

Покажите хотя бы одну строку данных из старой таблицы, и пример как они должны выглядеть в новой.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
wmaccel
wmaccel
Topic Starter сообщение 1.2.2011, 13:08; Ответить: wmaccel
Сообщение #3


Старая таблица:
[img]http://s015.radikal.ru/i333/1102/04/7874378af7fd.jpg[/img]
Новая таблица:
[img]http://s006.radikal.ru/i214/1102/97/c589531da456.jpg[/img]
Поля set4 и text не связаны друг с другом.
Поле date заменено полем time (где time должно быть в секундах).
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 1.2.2011, 13:13; Ответить: ZiTosS
Сообщение #4


phpnoob, сейчас сделаем :) Делов на 10 минут, надеюсь на PHP подойдет.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 1.2.2011, 13:51; Ответить: ZiTosS
Сообщение #5


phpnoob, что-то у меня секунды при конвертации с вашими не совпадают. У вас в таблице формат 01.02.11 => dd.mm.YY?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 1.2.2011, 14:13; Ответить: ZiTosS
Сообщение #6


phpnoob,
[php]<?php

$db_host = 'localhost'; // хост MySQL
$db_login = 'root'; // юзер MySQL
$db_pass = ''; // пароль MySQL
$db_name = 'converter'; // имя БД

$table_from = 'conv1'; // откуда конвертим
$table_where = 'conv2'; // куда конвертим

$insert_sql = "INSERT INTO {$table_where} VALUES";

$connect = mysql_connect($db_host, $db_login, $db_pass) or die("Не могу подключиться к серверу MySQL");
mysql_select_db($db_name, $connect) or die("Проблема выбора Базы Данных");

$res = mysql_query("SELECT *, UNIX_TIMESTAMP(STR_TO_DATE(date, '%d.%m.%y')) as date FROM `{$table_from}`");
if( mysql_num_rows($res) > 0 )
{
while( $data = mysql_fetch_assoc($res) )
$insert_sql .= "(null,{$data['date']},'{$data['login']}','{$data['password']}','{$data['set1']}','{$data['set2']}','{$data['set3']}','0.00','{$data['email']}','{$data['name']}','{$data['name1']}','{$data['label']}'),";

$replacer = strrpos($insert_sql, ',');
$insert_sql[$replacer] = ';';

if( mysql_query($insert_sql) )
echo "Данные успешно сконвертированы";
else
echo "Ошибка в конвертации данных";
}

?>[/php]
Опишу типы, которые я использовал:
Таблица из которой конвертируем
id - INT(11) ; login, password, email, name , name1, date, label - VARCHAR(255) ; set1, set2, set3 - VARCHAR(10) ; text - text

Таблица куда конвертируем
id, time - INT(11) ; login, password, email, name , name1, label - VARCHAR(255) ; set1, set2, set3, set4 - VARCHAR(10) ;

По поводу преобразования даты. Сначала дата из строкового формата dd.mm.YY переводится в формат даты - YYYY-mm-dd. Затем вычисляем количество секунд с 01.01.1970
У меня получается, что 01.02.11 -> 1296507600
Как у вас получилось 1296518400 я не знаю.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
wmaccel
wmaccel
Topic Starter сообщение 1.2.2011, 14:58; Ответить: wmaccel
Сообщение #7


Огромное Вам спасибо за скрипт, попробую разобраться.
По поводу времени, число 1296518400 взялось отсюда:
[php]echo mktime(0,0,0,date('m'),date('d'),date('y'));[/php]
Выходит я неправильно сегодняшний день перевел в секунды?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 1.2.2011, 16:13; Ответить: ZiTosS
Сообщение #8


phpnoob, ваш пример выдает у меня 1296507600
По разному настроены сервера. 1296518400 - 1296507600 = 10800 / 3600 = 3
Разница у нас с вами в 3 часа. Ваш сервер плюсует ещё 3 часа, возможно у вас другой часовой пояс.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
сообщение 6.2.2011, 11:46; Ответить: gaaarfild
Сообщение #9


time - INT(11), Рекомендую ставить по возможности больше. Поле time растет постоянно.
И к 2038 году даже максимального значения INT станет недостаточно.))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 6.2.2011, 12:16; Ответить: ZiTosS
Сообщение #10


gaaarfild, спасибо за пояснения, эио был пример ;) Тема закрыта.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
15 yaroslav89 6871 8.4.2024, 17:17
автор: spoyer_ru
Открытая тема (нет новых ответов) ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ
[Чарджбек|Рекавери|Возврат]
9 Leado 3916 9.2.2024, 16:04
автор: baza0013
Открытая тема (нет новых ответов) Двойная конвертация в Google Ads
2 metvekot 1196 22.1.2024, 4:52
автор: Skyworker
Открытая тема (нет новых ответов) Базы данных, различной тематики, выкладываем тут.
Делимся, обмениваемся, заказываем, парсим.
12 InfoObmen 15262 4.9.2022, 2:32
автор: Галецкая
Открытая тема (нет новых ответов) Сбор Данных Услуг И Специалистов Яндекс.Услуги
2 zkalinin 2379 26.5.2022, 17:10
автор: zkalinin


 



RSS Текстовая версия Сейчас: 25.4.2024, 13:17
Дизайн