Coldfusion: перенос данных из одного источника данных в другой

Мне нужно переместить ряд таблиц из одного источника данных в другой. Наша хостинговая компания не предоставляет общих паролей для баз данных, поэтому я не могу написать сценарий SQL для этого.

Лучший вариант — просто написать небольшой скрипт для coldfusion, который позаботится об этом.

Обычно я бы сделал что-то вроде: SELECT * INTO database.table FROM database.table

Единственная проблема заключается в том, что cfquery не позволяет вам использовать два источника данных в одном запросе.

Я не думаю, что мог бы использовать QoQ, потому что вы не можете указать ему использовать второй источник данных, но иметь dbType «Query».

Может ли кто-нибудь придумать какие-нибудь разумные способы сделать это? Или единственный вариант — просто перебирать каждую строку в первом запросе, добавляя их по отдельности ко второму?

Моя проблема в том, что это займет гораздо больше времени. У нас много столов, которые нужно передвинуть.


person Rumpleteaser    schedule 10.05.2012    source источник
comment
как насчет создания данных в формате CSV, либо записи их в файл и загрузки, либо cfcontent и загрузки?   -  person Henry    schedule 10.05.2012
comment
Тогда мне тоже пришлось бы загружать его вручную. Ищу быстрый динамичный способ.   -  person Rumpleteaser    schedule 10.05.2012
comment
Я думаю, что это будет самым безопасным, если не самым быстрым.   -  person Henry    schedule 10.05.2012
comment
если у вас есть связанные серверы, это, безусловно, самый быстрый. Используйте один сервер в качестве источника данных и ссылайтесь на другой в своем заявлении from, используя servername.databasename.dbo.tablename   -  person Matt Busche    schedule 10.05.2012


Ответы (4)


Итак, у вас нет общего пароля между базами данных, но, похоже, у вас есть пароли для каждой отдельной базы данных (поскольку у вас настроены источники данных). Итак, можете ли вы создать определение связанного сервера из базы данных 1 в базу данных 2? Учетные данные пользователя могут быть сохранены на связанном сервере, поэтому они не обязательно должны совпадать с исходной БД. После того, как это настроено, вы определенно можете перемещать данные между двумя БД.

Мы постоянно используем это для синхронизации данных из нашей активной базы данных с нашей тестовой средой. Я могу предоставить более конкретный SQL, если это сработает для вас.

person Bill Moniz    schedule 10.05.2012
comment
Это решает мою проблему, спасибо. И я нашел учебник здесь: sqltutorials.blogspot.co.nz/2009 /08/linked-servers.html - person Rumpleteaser; 11.05.2012

Вы МОЖЕТЕ получить доступ к двум базам данных, но не к двум источникам данных в одном запросе.

person Evik James    schedule 10.05.2012
comment
Если имя пользователя, под которым создан источник данных, имеет разрешение на доступ к обеим таблицам, вы можете ссылаться на 2 источника данных в одном cfquery. - person Paul; 11.05.2012
comment
@ Пол, около года назад у меня был тот же вопрос, что и в исходном сообщении. - person Evik James; 11.05.2012

Несколько лет назад я написал что-то под названием «DataSynch» именно для таких вещей.

http://www.bryantwebconsulting.com/blog/index.cfm/2006/9/20/database_synchronization

Все, что вам нужно для этого, включено в мой бесплатный пакет "com.sebtools": http://sebtools.riaforge.org/

На самом деле я не использовал это несколько лет, но я не могу придумать ни одной причины, по которой это все еще не работает.

person Steve Bryant    schedule 10.05.2012

Генри, зачем все это? Почему бы просто не использовать диспетчер SQL для перемещения по выбранным таблицам с помощью функции «импорт данных»? (щелкните правой кнопкой мыши на своей базе данных и выберите «импортировать», затем используйте собственный клиент и разрешения для «другой» базы данных, чтобы указать таблицы. Вашему менеджеру SQL потребуется доступ к обеим базам данных, но сами серверы баз данных не нужны доступ друг к другу. Ваша управляющая студия будет служить каналом.

person Mark A Kruger    schedule 10.05.2012
comment
Опять же ... вам нужны разрешения на обе БД (отдельные разрешения в порядке - они вводятся во время импорта). - person Mark A Kruger; 10.05.2012