Скопируйте данные из таблиц в одной БД для дублирования таблиц в другой БД - что такое SQL? - PullRequest
1 голос
/ 02 августа 2009

У меня есть ситуация, когда у меня есть 20 баз данных Access. Каждая имеет 15 одинаковых таблиц, но с разными данными. (Имя и схема идентичны для каждой таблицы в 20 базах данных).

Я хочу создать новую базу данных с той же структурой и заполнить ее содержимым всех 20 исходных баз данных, поэтому у меня есть одна база данных с 15 большими таблицами вместо 20 баз данных с 15 меньшими таблицами.

Я должен сделать все это в SQL, поскольку я взаимодействую через эту библиотеку Ruby Acess - http://rubyonwindows.blogspot.com/2007/06/using-ruby-ado-to-work-with-ms-access.html

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

Да, и чтобы сделать вещи немного более сложными, каждая из пятнадцати таблиц в каждой БД имеет свой набор полей, а некоторые имеют много полей (40 или около того). Итак, идеальное ленивое решение не потребовало бы от меня перечисления всех полей в таблице, когда я копирую строки. Это возможно?

Ответы [ 2 ]

1 голос
/ 03 августа 2009

Basic sql будет "вставкой в ​​оператор выбора" . Чтобы сделать его короче, я назову ваши 20 баз данных, таких как DB1, DB2, .. DB20, и вашу «конечную» базу данных DBFinal.

Ленивое решение потребовало бы получения имен полей из главной схемы - лучше перечислить поля (при условии, что вы можете автоматически генерировать операторы sql или использовать любые из ваших приложений или диаграмм ER)

Логика:

1) создать DBFinal, отключить автоинкремент для первичных ключей (чтобы вы могли вставлять значения первичных ключей из DB1, DB2, ... 2) создать выбор, который выбирает все строки и столбцы для каждой таблицы. как:

SELECT key, atrb1, atrb2 FROM table1

3) с помощью команды text-copy paste собрать оператор "insert into select" примерно так:

INSERT into DBFinal.user.table1 (key, atrb1, atrb2) SELECT key, atrb1, atrb2 FROM table1

4) Если у вас есть одинаковые значения ключей в разных базах данных (для разных значений), вам нужно изменить все значения первичного - внешнего ключа, чтобы в целевой базе данных не было дубликатов. Я рекомендую добавить значение (количество строк + 1 в DBFinal). Вставить в таблицу1 (ключ, atrb1, atrb2) в DBFinal Клавиша SELECT + 9001, atrb1, atrb2 ИЗ таблицы1

1 голос
/ 02 августа 2009

Если у вас есть доступный сервер SQL, вы можете использовать службы интеграции SQL Server (SSIS).

С этим вы можете использовать графический интерфейс и мастера для передачи данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...