2016-11-15 3 views
0

Я пытаюсь импортировать базу данных из MySQL в MS Access. Я следовал инструкциям:Отношения, потерянные при импорте данных MySQL в MS Access

Converting MySQL to MS Access

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

+3

Primary ключи сохраняются при * привязке * таблиц, но не при импорте. Отношения не могут быть импортированы вообще из внешнего Access. Вам придется воссоздать оба в таблицах Access - либо с DDL SQL, либо с VBA (DAO). – Andre

ответ

2

Чтобы преобразовать структуру таблицы из MySQL или любой другой базы данных в MS, в первую очередь создается база данных дампа как SQL. Вы можете использовать, например, ответы от темы this, а затем отредактировать полученный DDL SQL, сделать его совместимым с MS Access. Базовый DDL MySQL и Access qre очень похожи. На самом деле первичный ключ и отношения - это ограничения, а также индексы. Например, вот DDL для создания таблицы с первичным ключом, один дополнительный индекс и две связи с таблицами стран и клиентами:

create table CustomersAddresses 
(
    ID_CustomerAddress COUNTER   not null, 
    ID_Customer   INTEGER, 
    AddressLIne1   Text(255), 
    AddressLIne2   Text(255), 
    ID_Country   INTEGER, 
constraint PK_CUSTOMERSADDRESSES primary key (ID_CustomerAddress) 
); 

create index ID_Customer on CustomersAddresses 
(
    ID_Customer   ASC 
); 

alter table CustomersAddresses 
    add constraint FK_CustomersAddresses_REF_Countries foreign key (ID_Country) 
     references Countries (ID_Country); 

alter table CustomersAddresses 
    add constraint FK_CustomersAddresses_REF_Customers foreign key (ID_Customer) 
     references Customers (Id_Customer) on delete cascade on update cascade; 

Вы должны получить подобный SQL из инструмента MySQL структуры таблицы дампа и после редактирования выполнять команды DDL в Доступ осуществляется вручную или с помощью VBA. Обратите внимание, что DAO и встроенный конструктор запросов Access не поддерживают параметры on delete cascade on update cascade в DDL SQL, используйте ADO для этого, он поддерживает.

Самый простой способ для преобразования структуры базы данных с использованием CASE-инструментов, таких как Эрвин или SAP PowerDesigner: они могут reverce структуру базы данных практически любой базы данных, конвертировать его в любой целевой базы данных и даже создавать новые databese в нескольких кнопку нажмет

+0

Я связал запуск дампа MySQL в Access, но он сказал, что файл слишком велик, чтобы вписаться в окно запроса. Свалка длиной ~ 20k. Существуют и другие проблемы, такие как CREATE TABLE, если NOT EXISTS не работают. – posfan12

+1

Конечно, вы не можете получить те же функции в Access, потому что MySQL и Access - это разные типы баз данных. Честно говоря, я не понимаю, почему вы пытаетесь переместить такую ​​большую базу данных в Access, она менее надежна и имеет гораздо больше ограничений, сравнивая MySQL, например Access имеет ограничение 2 ГБ на файл данных и не работает должным образом уже после 1,5 ГБ , Вам лучше привязать таблицы в интерфейсе Access к серверу MySQL. Поскольку интерфейс доступа является идеальным. –

+0

Я попытался связать, и он показал первичные ключи, но не отношения внешних ключей. Я пытаюсь экспортировать диаграмму этих отношений, и Access обычно имеет хороший. – posfan12

Смежные вопросы