Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Не получается настроить импорт новых данных

Спасите помогите, пожалуйста, уже голова взрывается. Не понимаю как сделать правильно следующий запрос:
есть 2 таблицы в одной базе mysql. Поля у них разные. 
в Таблице 1 (t1) есть поля category и description и id (это просто промежуточная таблица из feed-а)
в Таблице 2 (t2) есть поля title и description и id (primary и autoincrement) (а это важная таблица базы данных)

Стоит неподдающаяся задача перенести данные из Таблицы 1 (t1) в Таблицу 2 (t2) по принципу:
category.t1 -> title.t2
description.t1 -> description.t2

Но, самое сложное, что должны быть проверки, а я не понимаю как ещё и настроить сверку по id:
1) если строка с такими значениями уже есть в t2, ничего не делать или обновить
2) если строки с такими значениями нет, то добавить строку
3) если в t2 есть значения, а в t1 их нет, то удалить строки из t2
4) если в t2 есть значения, но они отличаются от t1, то обновить

Очень-очень большое спасибо, если кто может помочь.
Ответ:
Мне непросто следить за ходом Ваших мыслей, когда Вы каждый раз выдаёте их кусочек. При этом ещё часть надо искать/вспоминать, где и как оно описано выше, а часть всё равно отсутствует. Давайте попробуем начать заново, с нуля. Итак.

Есть некая рабочая таблица, в которой хранится набор некоторых данных. Это в Вашей терминологии таблица 2.

Есть несколько внешних источников данных, пользуясь которыми, Вы вносите изменения в эти рабочие данные. Это и описанная выше таблица 1, и источники данных из Интернета.

Что у Вас есть и что Вы хотите сейчас?

У Вас есть текущее состояние таблицы 2. У Вас есть новая версия таблицы 1. Вы желаете провести корректировку данных таблицы 2 на основании данных таблицы 1.

Какие возможны состояния записи в таблице 2? Их всего 2: запись последний раз откорректирована по данным из некоторой версии таблицы 1; запись последний раз откорректирована по данным из другого источника (Интернет).

Вывод. Должен существовать признак, который позволяет определить как минимум источник последней корректировки записи, а ещё лучше - дополнительно и дату этой корректировки.

Какие возможны соотношения записи из таблицы 1 и соответствующей ей записи из таблицы 2? Тут вариантов 3: запись в таблице 2 отсутствует; запись в таблице 2 последний раз корректировалась по данным из ранней версии таблицы 1; запись в таблице 2 последний раз корректировалась по сторонним данным (Интернет);

В первом из вариантов действия очевидны - запись просто добавляется в таблицу 2. А вот какие должны быть действия в остальных двух случаях? для каждого из них возможен один из двух вариантов, причём по отдельности для каждого поля записи таблицы 2: данные корректируются в соответствии с новой версией таблицы 1; данные не корректируются независимо от совпадения с данными в таблице 1.

Вывод. Это тот момент, с которым следует определиться. Причём определиться однозначно.

Какие возможны соотношения записи из таблицы 2 и соответствующей ей записи из таблицы 1? Вариантов 2: соответствующая запись присутствует; соответствующая запись отсутствует.

В первом варианте действия определились ранее - в варианте обратного соответствия. Осталось определиться со вторым вариантом - либо запись в таблице 2 остаётся, либо удаляется. При этом либо учитывается, либо не учитывается источник последнего изменения записи.

Вывод. Это ещё один момент, с которым следует определиться. Причём определиться опять же однозначно.

Для начала я предлагаю ввести в структуру таблицы 2 два поля. Первое - это ENUM либо кодовое поле, по которому определяется источник последней корректировки. Второе - это автообновляемое поле штампа времени (DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP). Их совокупность однозначно определяет источник и момент последней корректировки и позволяет принять решение о требуемом действии.

И однозначно определиться с указанными выше ситуациями и действиями.

Это сообщение отредактировал(а) Akina - 28.3.2017, 11:09
Вопрос: Как помешать пользователю сделать импорт базы данных

как поменять пользователя не делать импорт базы данных (лучший способ)

Добавлено через 59 секунд
как помешать пользователя не делать импорт базы данных (лучший способ)
Ответ: глобальный сеть это когда сервер в москве а клиент в японии

Добавлено через 41 секунду
Сообщение от Nslava
Запуск приложения по RDP в новых виндах (2008) можно настроить так, что юзер даже и не поймет, что он RDP запустил. Обычное окно приложения будет.
а эта как можна реализовать?
Вопрос: Excel файлы для импорта-экспорта данных.

Подскажите, как обосновать, что:
использование Excel файлов для импорта-экспорта данных в информационной системе это лажа.
Хочу XML,CSV.
Ответ:
mad_nazgul
постоянный мембер
пропущено...
Спорно. В любом формате эти проблемы могут быть.
Проблем меньше, если из чисел вычищать все посторонние символы (пробелы, апострофы, валюты), оставляя только ., которые менять на локаль.

Хотя есть проблема наличия одновременно . (десятич.знак) и , (разделитель тысяч). :)


Проблема в том, что Excel сохраняет дату "как есть".
Точнее в зависимости от локали машины в которой сохранили.
Если читать не Excel/VBA, то гадаешь "," это разделитель тысяч или дроби.
Ну и что означает дата "03.04.2000" то ли 3 апреля, то ли 4 марта. :-)

Но это все решаемые проблемы.
Главное чтобы вместо данных bmp-каринку не запихнули. :-)


А кто-нибудь из здесь обсуждающих вообще в курсе, как excel дату хранит? Вообще-то это целое число, означающее номер дня с 1 января 1900 с той поправкой, что в календаре excel присутствует лишняя дата 29 февраля 1900. Соответственно, с 1 марта 1900 дата - это номер дня с 1 января 1900 плюс 1
Вопрос: Посоветуйте СУБД под BigData с новыми данными в режиме риалтайм.

Пока сидим на PostgreSQL но встают жуткие проблемы при проходе всей базы, апдейтах, выборках.

Мы храним bitcoin blockchain распарсеный по блокам, транзакциям, входам и выходам и адресам. Почти по всем сущносятм делаются различные аналитические выборки, в то же время в режиме реального времени добавляются новые данные со скоростью примерно 200 тысяч транзакций в сутки, около 1.5M входов столько же выходов. Всего сейчас около 140М транзакций под 400М входов и выходов. При добавлении данных идет обсчет всех значений для к примеру адресов, сколько пришло сколько ушло и так далее. База с индексами весит почти 200 гигов.

Вся БД на одном сервере с 64GB RAM (из которых используется только 10GB) и SSD жесктим диском, на котором только БД.

При аналитических выборках по нашим алгоритмам это все выполняется очень долго. Хотелось бы иметь возможность выбирать любые данные по различным критериям не больше секунды. А так же проводить массовый апдейт.

Думали на тему MemSQL, даже попробовали туда начать экспорт но все равно уперлись примерно в 10к операций в секунду, что для нас очень медленно, кроме того mysql движок наложил ограничения при массовых инсертах он не возвращает id как PostgrSQL что приводит к последующему селекту.
Ответ:
nateless
Вся БД на одном сервере с 64GB RAM (из которых используется только 10GB) и SSD жесктим диском, на котором только БД.

А почему, если не секрет ?
Вопрос: Экспорт и импорт с Mysql в Excel

У меня вопрос на который я целый день могу найти ответ. Как корректно импортировать данные с Excel(csv) в Mysql?

Если я экспортирую данные с бд в кодировки utf-8 то в Еxcel пропадает русский текст, если в windows-1251, то все нормально, но вот обратно залить файл не получается, если я при импорте выберу кодировку utf-8 пишет "Импорт успешно завершен" но русские буквы не заносятся, а вот если выбрать кодировку windows-1251 "Этот модуль не поддерживает импорт сжатых данных!"

Как решить данную проблему, очень прошу помощи.
За ранние спасибо!

Добавлено через 22 часа 14 минут
Ну хоть кто то ответьте по это теме, пожалуйста
Ответ:
Сообщение от ref_flix
Если я экспортирую данные с бд в кодировки utf-8 то в Еxcel пропадает русский текст,
Вы можете при подключении к mysql настроить кодировку клиента на cp1251 (windows-1251) или открывать в Экселе файл csv в кодировке utf через импорт внешних данных, там можно указать в какой кодировке текст в источнике.

Сообщение от ref_flix
а вот если выбрать кодировку windows-1251 "Этот модуль не поддерживает импорт сжатых данных!"
Может это потому, что соединение работает с utf-8, а ва отправляете cp1251. Попробуйте перед импортом выполнить запросы:
PHP
1
2
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");
Вопрос: Не работает Импорт/экспорт данных SQL Server 2014

Всем привет!

Имеется Windows 7 Ultimate x64, SQL Server 2014 Enterprice и Visual Studio 2013

Вообще, мастер импорта экспорта (64-битный) в SQL Server работает.

Возникает одна и та же ошибка в 3-х случаях

1) Пытаюсь запустить импорт в Management studio по правому клику на базе данных-задачи-Импорт..
2) Пытаюсь в Visual Studio в проекте SSIS добавить задачу Data Flow Task.
3) Ну и когда в меню Пуск хочу запустить мастер импорта экспорта (32-битный).

С последним случаем ладно, система 64 бит, а мастер 32.

Но помогите с первыми двумя случаями?
Возможно ли полная работа с Integrated Services в 64битной системе?
Или можно спокойно работать только в 32битной?

Вот текст ошибки:

ЗАГОЛОВОК: Мастер импорта и экспорта SQL Server
------------------------------

Не удалось создать задачу потока данных служб SSIS. Убедитесь, что библиотека DTSPipeline.dll доступна и зарегистрирована. Мастер не может продолжить работу и будет закрыт.

------------------------------
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ:

Невозможно создать задачу из XML для задачи "", тип ", {1CF081CA-677D-4561-967A-D06798F62DD6}", из-за ошибки 0xC0010014 "Произошла одна или несколько ошибок. Должны быть более определенные ошибки, предшествующие этой, которые объясняют подробности ошибок. Это сообщение используется как возвращаемое значение функций, обнаруживших ошибки.".
({8503492E-42A1-4ECA-B535-17BCB36A4843})

------------------------------
КНОПКИ:

ОК
------------------------------
Ответ: Перед установкой сделал проверку средством проверки условий - никаких условий препятствующий установке выявлено не было.
В ходе самой установки тоже никаких малейших ошибок не возникало.

Сносил, заново ставил, так же ошибка возникает при попытке импорта.

не знаю уже, что делать...на майксософтовских форумах пока решений тоже не нашел..
Вопрос: Подключение к БД есть а данные не добавляются.

Если в БД(PhpMyAdmin) вручную внести данные а потом при регистрации ввести те же данные, получается ошибка что такой логин или е-майл уже в базе есть, но внести новые данные с помощью формы не получается.

Код страницы регистрации.

CODE (htmlphp):

  1. <?php Head('Страница регистрации'); ?>
  2.  
  3. <body>
  4. <div class="basis">
  5. <?php Menu();
  6. MessageShow();
  7. ?>
  8.  
  9. <div class="content">
  10.   <div id="center">
  11.  <p> <h2 id="h1center">Заполните форму:</h2>
  12.   <form class="formreg" method="POST" action="/account/register">
  13.   <br /><input type="text" name="login" placeholder="Логин">
  14.   <br /><input type="email" name="email" placeholder="E-Mail" required>
  15.   <br /><input type="password" name="password" placeholder="Пароль" required>
  16.   <br /><input type="text" name="name" placeholder="Имя" required>
  17.   <br /><select size="1" name="country">
  18.   <option value="0">Не скажу</option>
  19.   <option value="1">Украина</option>
  20.   <option value="2">Россия</option>
  21.   <option value="3">Беларуссь</option>
  22.   <option value="4">Польша</option>
  23.   <option value="5">Казахстан</option>
  24.   </select><br />  <span>Загрузить аватар</span><br /><input type="file" name="avatar" multiple accept="image/*,image/jpeg">
  25.   <br /><input type="submit" name="enter" value="Регистрация">
  26.   <input type="reset" value="Очистить">
  27.   </form>
  28.   </p>
  29.    </div>
  30.   </div>
  31.  
  32.   <?php bottom(); ?>
  33. </div>
  34.   </body>
  35.   </html>


Код обработчика.

CODE (htmlphp):

  1.  
  2.  
  3. <?php
  4.  
  5. if ($Module == 'register' and $_POST['enter']) {
  6.    
  7.    $_POST['login'] = FormChars($_POST['login']);
  8.    $_POST['password'] = GenPass(FormChars($_POST['password']), $_POST['login']);
  9.    $_POST['name'] = FormChars($_POST['name']);
  10.    $_POST['email'] = FormChars($_POST['email']);
  11.    $_POST['country'] = FormChars($_POST['country']);
  12.    $_POST['avatar'] = FormChars($_POST['avatar']);
  13.    If (!$_POST['login'] or !$_POST['email'] or !$_POST['password'] or !$_POST['name'] or $_POST['country'] > 4) MessageSend(1, 'Ошибка валидации формы.');
  14.  
  15.    
  16.    $Row = (($CONNECT, "SELECT `login` FROM `user` WHERE `login` = '$_POST[login]'"));
  17.    if ($Row['login']) ('Логин<b>' . $_POST['login'] . '</b> уже используется.');
  18.    
  19.    $Row = (($CONNECT, "SELECT `email` FROM `user` WHERE `email` = '$_POST[email]'"));
  20.    if ($Row['email']) ('E-Mail<b>' . $_POST['email'] . '</b> уже используется.');
  21.    
  22.    ($CONNECT, "INSERT INTO `user` VALUES (' ', '$_POST[login]', '$_POST[password]', '$_POST[name]', NOW(), '$_POST[email]',  '$_POST[country]', '$_POST[avatar]')");
  23.    echo 'OK';
  24.    
  25. }
  26. ?>
  27.  


Когда смотрю браузере консоль есть ошибка
CODE (htmlphp):

  1.  
  2. (program):1 Uncaught SecurityError: Blocked a frame with origin "http://shortem.com" from accessing a frame with origin "http://***.com". Protocols, domains, and ports must match.
  3.  


Файл

Уже всю голову сломал.. Помогите пожалуйста.
Прикреплено изображение (Нажмите для увеличения)

Ответ:
andrea2010 пишет:
Если в БД(PhpMyAdmin) вручную внести данные а потом при регистрации ввести те же данные, получается ошибка что такой логин или е-майл уже в базе есть, но внести новые данные с помощью формы не получается.

Код страницы регистрации.

CODE (htmlphp):

  1. <?php Head('Страница регистрации'); ?>
  2.  
  3. <body>
  4. <div class="basis">
  5. <?php Menu();
  6. MessageShow();
  7. ?>
  8.  
  9. <div class="content">
  10.   <div id="center">
  11.  <p> <h2 id="h1center">Заполните форму:</h2>
  12.   <form class="formreg" method="POST" action="/account/register">
  13.   <br /><input type="text" name="login" placeholder="Логин">
  14.   <br /><input type="email" name="email" placeholder="E-Mail" required>
  15.   <br /><input type="password" name="password" placeholder="Пароль" required>
  16.   <br /><input type="text" name="name" placeholder="Имя" required>
  17.   <br /><select size="1" name="country">
  18.   <option value="0">Не скажу</option>
  19.   <option value="1">Украина</option>
  20.   <option value="2">Россия</option>
  21.   <option value="3">Беларуссь</option>
  22.   <option value="4">Польша</option>
  23.   <option value="5">Казахстан</option>
  24.   </select><br />  <span>Загрузить аватар</span><br /><input type="file" name="avatar" multiple accept="image/*,image/jpeg">
  25.   <br /><input type="submit" name="enter" value="Регистрация">
  26.   <input type="reset" value="Очистить">
  27.   </form>
  28.   </p>
  29.    </div>
  30.   </div>
  31.  
  32.   <?php bottom(); ?>
  33. </div>
  34.   </body>
  35.   </html>


Код обработчика.

CODE (htmlphp):

  1.  
  2.  
  3. <?php
  4.  
  5. if ($Module == 'register' and $_POST['enter']) {
  6.    
  7.    $_POST['login'] = FormChars($_POST['login']);
  8.    $_POST['password'] = GenPass(FormChars($_POST['password']), $_POST['login']);
  9.    $_POST['name'] = FormChars($_POST['name']);
  10.    $_POST['email'] = FormChars($_POST['email']);
  11.    $_POST['country'] = FormChars($_POST['country']);
  12.    $_POST['avatar'] = FormChars($_POST['avatar']);
  13.    If (!$_POST['login'] or !$_POST['email'] or !$_POST['password'] or !$_POST['name'] or $_POST['country'] > 4) MessageSend(1, 'Ошибка валидации формы.');
  14.  
  15.    
  16.    $Row = (($CONNECT, "SELECT `login` FROM `user` WHERE `login` = '$_POST[login]'"));
  17.    if ($Row['login']) ('Логин<b>' . $_POST['login'] . '</b> уже используется.');
  18.    
  19.    $Row = (($CONNECT, "SELECT `email` FROM `user` WHERE `email` = '$_POST[email]'"));
  20.    if ($Row['email']) ('E-Mail<b>' . $_POST['email'] . '</b> уже используется.');
  21.    
  22.    ($CONNECT, "INSERT INTO `user` VALUES (' ', '$_POST[login]', '$_POST[password]', '$_POST[name]', NOW(), '$_POST[email]',  '$_POST[country]', '$_POST[avatar]')");
  23.    echo 'OK';
  24.    
  25. }
  26. ?>
  27.  


Когда смотрю браузере консоль есть ошибка
CODE (htmlphp):

  1.  
  2. (program):1 Uncaught SecurityError: Blocked a frame with origin "http://shortem.com" from accessing a frame with origin "http://***.com". Protocols, domains, and ports must match.
  3.  


Проблема решена.

Вопрос: Импорт данных в MS Sql server 2000

Есть база на Sql server 2000 с заполненными таблицами, организованны связи между таблицами. База рабочая. Необходимо импортировать в таблицы базы SQL новые данные из базы на Access. Импорт пробовал делать с помощью dts import/export wizard из файла excel, из текстового файла, из самой базы Access. Но безуспешно. В ту же таблицу импорта не происходит. Если импортировать данные в таблицу с новым именем, тогда импорт корректен. Только при этом создается таблица с отличающимися типами данных. Надо ручками типы изменять. Удалять старую таблицу, переименовывать вновь созданную. При этом связи между таблицами теряются. Необходимо их восстанавливать. Каким образом сделать импорт данных в таблицы базы на Sql server?
Ответ:
Juls14
База рабочая повторюсь. Ограничения не создавал. Их создали до меня.

То, что ограничения создавали не вы, не дает вам право вносить данные, которые нарушают эти ограничения

Juls14
Как понимаю, импорт возможен, но связи придется перерисовывать, настраивать.

Вы для начала попрообуйте правильном порядке данные заносить. А не в произвольном
Вопрос: Умная загрузка данных в Аксесс

Добрый день друзья. Помогите решить задачку.
Я хочу настроить импорт особым образом. Заполняется [Таблица_Парс_ВК] из экселевского файла обычным импортом. С этим проблем нет

Но необходимо чтобы так же обновлялся [Справочник_ID_ВК] Именно обновлялся, добавлялись только новые позиции а старые игнорились. Я базово освоил таблицы, запросы и формы но видимо моих знаний не хватает.
И если есть способ решить проблему стандартным конструктором, т.е обойтись без SQL, такой способ предпочтительней, так как я еще не владею языком программирования а хотелось бы масштабировать инструмент для решения моих остальных задач, получить удочку вместо рыбы )) Пример в архиве.

И низкий поклон тем кто помогает в освоении этого чудного инструмента. На таких людях мир держится )
Ответ: Странные у вас рассуждения, если я раньше использовал батники и был сисадмином, то значит я должен в акцессе юзать скрипты vbs из внешних файлов? или того хуже, ещё пару способов могу придумать.

Как вообще без SQL можно работать с базами данных хоть в какой среде программирования?
Вопрос: Не получается сделать импорт БД Оракл

Добрый день! Хочу развернуть рабочий дамп на втором компьютере, для тренировки.
Было сделано на втором компьютере
1. Установил Оракл
2. Создал БД чистую
3. Настроил листенер
4. Создал пользователя MAGICASH5 и таблицы
5. Сделал экспорт
6. Сделал импорт

ПК на котором делался экспорт уже с рабочей базой: ОС Windows server 2012 x64, Oracle 11g, ,батник дампа:
EXP.EXE USERID=MAGICASH5/NCTMAGICASH5@MAGICASH FILE=EXP_MAGICASH5.DMP LOG=EXP_MAGICASH5.LOG OWNER=MAGICASH5 GRANTS=Y INDEXES=Y ROWS=Y CONSTRAINTS=Y FEEDBACK=5000000 STATISTICS=NONE
Дамп создался без ошибок, о чем свидетельствует: Export terminated successfully without warnings.

ПК на котором делался импорт: OC Windows 7 x64, Oracle 11g, батник дампа:
IMP.EXE USERID=SYSTEM/NCTSYS@MAGICASH FILE=EXP_MAGICASH5.DMP LOG=IMP_MAGICASH5.LOG FROMUSER=MAGICASH5 TOUSER=MAGICASH5 GRANTS=Y INDEXES=Y ROWS=Y CONSTRAINTS=Y FEEDBACK=5000000 (Под пользователем SYS не получилось, при коннекте от SYS выдает IMP-00058: ORACLE error 28009 encountered
ORA-28009: connection as SYS should be as SYSDBA or SYSOPERUsername:)

Импорт прошел с ошибками, у меня вопрос, на какие ошибки следует обращать внимание при импорте? По какой причине не прошел импорт? Лог прилагаю.

К сообщению приложен файл (IMP_MAGICASH5.rar - 21Kb)
Ответ: Ты наверно свистишь... Человек опечатку сделал, ты чуть живот себе не порвал, есть повод обратиться к психиатору.