Drupal и MSSQL

Главные вкладки

Аватар пользователя glu2006 glu2006 20 декабря 2008 в 13:31

Народ!
Направьте в нужную сторону)))
Необходимо импортнуть данные в друпал из БД MSSQL
Даже не импортнуть а по умному смигрировать из MSSQL в MYSQL (конвертеры баз не предлагать).
Только решения на базе Друпала.
Каким образом?

Комментарии

Аватар пользователя glu2006 glu2006 20 декабря 2008 в 16:26

Я бы тоже. ))) но надо просто законнектится к MSSQL вычитать данные из таблицы (процедура единоразовая и больше никогда не будет повторяться) и в цикле посохранять в ноды раскидав значения из полей соответствующим переменным. В общем вся проблема в том что я не могу соединиться с БД (все включено про php.ini) а вот кусок кода:

  $conn = mssql_connect('192.168.0.36', 'test1', 'test12345');
  if ($conn) {print 'yahoo';} else {print 'blya';}
  mssql_select_db('test_semerc', $conn);
  $results = mssql_query('SELECT * FROM dbo.Products;');

ну и далее по коду это все должно пойти в цикл с присваиванием, выдает вот такие ошибки соотв:

Warning: mssql_connect()[function.mssql-connect]: Unable to connect to server: 192.168.0.36:1433 in D:\htdocs\tag\cron11.php on line 2 (1433 если указывать порт)
blya
Warning: mssql_select_db(): supplied argument is not a valid MS SQL-Link resource in D:\htdocs\tag\cron11.php on line 4

Warning: mssql_query(): supplied argument is not a valid MS SQL-Link resource in D:\htdocs\tag\cron11.php on line 5

Это пример из простого файла на пхп, из друпала те-же ошибки только вид сбоку )).

Аватар пользователя glu2006 glu2006 20 декабря 2008 в 16:41

Ilya1st wrote:
"glu2006" wrote:
if ($conn) {print 'yahoo';} else {print 'blya';}

лол

Это уже от злости. День секасам с этим занимаюсь и толку ноль!!!
Да еще забыл, если поставить в php.ini
mssql.secure_connection = on
то тоже не работает.

Аватар пользователя andypost@drupal.org andypost@drupal.org 20 декабря 2008 в 19:56

При подключении к mssql есть ОЧЕНЬ много граблей, настоятельно рекомендую пользоваться odbc - работает достаточно прозрачно, тем более что это операция единовременная.

Аватар пользователя glu2006 glu2006 20 декабря 2008 в 21:42

<a href="mailto:andypost@drupal.org">andypost@drupal.org</a> wrote:
При подключении к mssql есть ОЧЕНЬ много граблей, настоятельно рекомендую пользоваться odbc - работает достаточно прозрачно, тем более что это операция единовременная.

К сожалению задача поставлена иначе, но буду признателен за ссылки на материал, поскольку с проблемой столкнулся впервые и к сожалению больно ударилси головой )))

Аватар пользователя glu2006 glu2006 20 декабря 2008 в 22:35

drunk wrote:
А что значит иначе ? Важен результат, или важен способ которым он будет достигнут ?

Иначе значит посредством подключения к MSSQL. Альтернативный способ это для меня лично, в обход задачи, может потом проканает.
Конвертаторов накачал как грязи, но блин руководство считает что это грубо и не по европейски ))) в общем (не наш метод). Уже пока писал поступило в аську предложение на перле скрипт писать, извращенцы. Я про Perl только знаю что есть такое слово ))) (к сожалению наверное)

Аватар пользователя drunk drunk 20 декабря 2008 в 23:05

Ну тогда сложно сказать. Навряд ли здесь есть извращенцы которые держат друпал на mssql.
Особенно улыбнуло "руководство считает что это грубо и не по европейски"
Когда им нужно повесить на стену картину они тоже считают что вбить гвоздь молотком "это грубо и не по европейски" ? Они наверное берут дрель, потом электический шуруповерт, и вешают картину на саморез. В результате получают тот же результат.
Какая разница какими способами достигнута цель, если результат один и тот же. Непонятна. Разве что в целях самообразования.

Аватар пользователя glu2006 glu2006 21 декабря 2008 в 12:45

drunk wrote:
Ну тогда сложно сказать. Навряд ли здесь есть извращенцы которые держат друпал на mssql.
Особенно улыбнуло "руководство считает что это грубо и не по европейски"
Когда им нужно повесить на стену картину они тоже считают что вбить гвоздь молотком "это грубо и не по европейски" ? Они наверное берут дрель, потом электический шуруповерт, и вешают картину на саморез. В результате получают тот же результат.
Какая разница какими способами достигнута цель, если результат один и тот же. Непонятна. Разве что в целях самообразования.

Самообразование вещь полезная. Попробую объяснить суть проблемы.
Я в настоящий момент создаю сеть интернет магазинов на уберкарте 6 сайтов работающих на одной базе данных, для каждого магазина свои группы товаров и т.д. Все эти магазины в настоящее время работают независимо друг от друга и на разных движках (самописных). Из трех магазинов работающих с мускульной базой уже данные смгрированы, осталось еще три которые написаны на asp или как-то так не силен я в этом. И у этих магазов БД соответственно MSsql, данные на них обновляются до момента запуска переехавшего магазина уже на друпальном движке т.е. нужен механизм позволяющий сказать заказчику "стоп на сутки" и в течении этих суток смигрировать данные и запуститься.

Мы представляем себе этот механизм так, коннект к БД средствами пхп из друпала или стороннего скрипта вычитка данных из ряда таблиц и node_save в цикле.
В общем все уперлось в коннект Sad
Если вариантов не предложится решать трабл все равно надо, и это решение я обязательно тут выложу так сказать для наследников и для тех кому это может пригодится.

Аватар пользователя HIgor1968 HIgor1968 20 декабря 2008 в 23:40

Если процедура разовая, то что мешает сначала таблицы MSSQL сначала его же срествами в промежуточный формат. Например обычный файл с разделителями. А сложные поля выгрузить в отдельные файлы создав в таблицах ссылки. А потом грузи в MySQL без проблем. Изврат конечно, но разово - вполне. Если с первой частью у самого проблема - найми того кто сделает думаю что будет не дорого и не долго.

Аватар пользователя andypost@drupal.org andypost@drupal.org 22 декабря 2008 в 7:48

Потерял нить дискуссии...

Задачи:

  • подключиться к mssql - решаемо несколькими способами (поиск database дравера или написание для drupal, способ подключения любой: php-mssql php-odbc php-pdo pear... нужен только для select)
  • написание выборки данных и проекция их на drupal-базу (например: feedapi + feedapi_mapper, node_save или свой модуль, которому ничего не мешает подключаться к старой базе и выбирать из неё дополнения)
  • интеграция с UC
  • темизация результатов

Какие сложности?

Аватар пользователя glu2006 glu2006 22 декабря 2008 в 9:36

<a href="mailto:andypost@drupal.org">andypost@drupal.org</a> wrote:

  • подключиться к mssql - решаемо несколькими способами (поиск database дравера или написание для drupal, способ подключения любой: php-mssql php-odbc php-pdo pear... нужен только для select)


Сложность осталась тут, не могу понять почему нету коннекту :(, буду сегодня разбираться в очередной раз.

Аватар пользователя glu2006 glu2006 28 октября 2009 в 21:41

MDinc wrote:
ябы перегнал все в SQL запросы или хml и потом бы их обработал в соответствии со структурой реализованной на Drupal
ХML Предпочтительней та как можно написать любой формат на XLS
а слить проще через свою прожку (я писал для общения с ACCESS)

Там была задача именно приконнектится и батч процессом смигрировать данные. Эта задача до сих пор не решена, для той процедуры мы просто из-за нехватки времени сконвертили базу в MySQL и перегнали данные скриптом.

Аватар пользователя pvb-d pvb-d 29 октября 2009 в 12:07

Попробовал у себя применить вышеприведенный скрипт
Подключение выполнилось успешно.

У MS Sql есть два вида авторизации: встроенная sql и Windows авторизация
я пробовал с логином из sql авторизации

Аватар пользователя Sinkora Sinkora 20 декабря 2009 в 3:36

Я, помню, сам мучался однажды с такой проблемой несколько дней подряд - не мог подконнектиться к MSsql через mssql_connect. Все форумы в интернете облазил, но никакой совет не помог. Но потом как-то заработало (.dll файл в php поменял, а может Всевышний помог:)) - но работало нестабильно, тьфу... Врагу не пожелаешь.