Экспорт SQL в MS Access - PullRequest
       31

Экспорт SQL в MS Access

2 голосов
/ 16 марта 2009

Я пытаюсь заменить пакет экспортера доступа DTS на исполняемый файл, который мы можем вызвать из наших хранимых процедур (используя xp_cmdshell).

Мы находимся в середине перехода между SQL 2000 и SQL 2005, и на данный момент, если мы не сможем использовать DTS или SSIS, это будет наилучшим вариантом.

Мне кажется, у меня есть следующие варианты:

  • Использование средства чтения данных SQL для чтения записей SQL и использование ADO.net для вставки прочитанных записей в Access. Я реализовал это, и это слишком медленно. Это не вариант
  • Настройка связанных таблиц в access, затем получение доступа для извлечения данных из sql. Если у кого-то есть опыт в этом, я был бы благодарен за некоторые примеры кода или за указание некоторых ресурсов?

Если есть какие-либо другие варианты для переноса больших объемов данных из SQL в базу данных Access, это было бы здорово, но производительность - большая проблема, так как мы можем иметь дело с до 1 миллиона записей на таблицу.

Ответы [ 5 ]

1 голос
/ 31 марта 2009

Я закончил с использованием Access Interop, благодаря Le Dorfier за указание мне в направлении функции импорта, которая кажется самым простым способом ..

Теперь у меня есть что-то вроде этого:

Access.ApplicationClass app = new Access.ApplicationClass();
Access.DoCmd doCmd = null;

app.NewCurrentDatabase(_args.Single("o"));
doCmd = app.DoCmd;

//Create a view on the server temporarily with the query I want to export

doCmd.TransferDatabase(Access.AcDataTransferType.acImport,
    "ODBC Database",
     string.Format("ODBC;DRIVER=SQL Server;Trusted_Connection=Yes;SERVER={0};Database={1}", _args.Single("s"), _args.Single("d")),
     Microsoft.Office.Interop.Access.AcObjectType.acTable,
     viewName,
     exportDetails[0], false, false);
//Drop view on server

//Releasing com objects and exiting properly.
1 голос
/ 16 марта 2009

Почему бы не создать связанную таблицу в Access и не извлекать данные из Sql Server вместо передачи из Sql в Access?

1 голос
/ 18 марта 2009

Я сделал много случаев, когда я начинаю с базы данных Access, подключаюсь к SQL Server, создаю таблицу или вставляю Querydef и пишу код для выполнения querydef, возможно, с аргументами. Но есть много предположений, которые мне нужно сделать в отношении вашей проблемы и вашего знакомства с Access, чтобы углубиться в детали. Как далеко вы можете получить с этим описанием?

1 голос
/ 16 марта 2009

Вы пробовали это ?

0 голосов
/ 18 марта 2009

Вы смотрели на bcp ? Это утилита командной строки, которая должна хорошо работать для импорта и экспорта больших объемов данных. Я никогда не пытался заставить его работать с Access, но это отличная легкая альтернатива DTS и / или SSIS.

Как уже говорили другие, самый простой способ, которым я знаю, чтобы получить данные в Access mdb, - это сначала настроить Access в Access. Грубо говоря:

  1. Создание связанных таблиц с данными SQL, которые вы хотите экспортировать. (в Access: File -> получить вечные данные -> таблицы ссылок) Это просто дает вам соединение с сервером sql.
  2. Создайте локальную таблицу, которая представляет схему данных, которые вы хотите экспортировать. (на вкладке таблицы нажмите кнопку «новый» и следуйте за своим носом).
  3. Создайте запрос на обновление, который выбирает данные из связанных таблиц (SQL Server) и добавляет строки в локальную таблицу (access mdb).
  4. На вкладке макросов создайте новый макрос, который выполняет запрос, который вы только что создали выше (я не могу вспомнить точное «действие» для использования, но это что-то вроде OpenQuery или RunQuery); назовите макрос «autoexec», который будет запускаться автоматически при открытии базы данных.
  5. Используйте скрипт (или любой другой), чтобы скопировать и открыть mdb при необходимости; макрос autoexec начнет работу, и запрос скопирует данные с сервера SQL на базу данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...