Похоже, у вас есть много .mdb и .csv, которые вам нужно объединить в один .mdb. Этот ответ работает с этим предположением, и что у вас есть доступ к SQL Server. Если вы этого не сделаете, рассмотрите возможность загрузки SQL Express.
Использование SQL Server в качестве посредника между несколькими источниками данных и целевым хранилищем данных. Сценарий каждого источника данных как вставка в таблицу хранения SQL Server. Когда все данные загружены в таблицу хранения, выполните окончательное добавление в целевое хранилище данных Access.
Рассмотрим эти шаги:
- В SQL Server создайте таблицу хранения для импортированных данных CSV.
CREATE TABLE CsvImport
(CustomerID smallint,
LastName varchar (40),
Дата рождения smalldatetime)
- Создайте сохраненный процесс, задачей которого будет чтение заданного пути к файлу CSV, и вставьте его в таблицу SQL Server.
CREATE PROC ReadFromCSV
@CsvFilePath varchar (1000)
КАК
BULK
ВСТАВИТЬ CsvImport
FROM @CsvFilePath - 'c: \ some.csv'
С
(
FIELDTERMINATOR = ',', - ваши собственные определенные терминаторы должны идти сюда
ROWTERMINATOR = '\ n'
)
GO
- Создайте сценарий для вызова этой сохраненной процедуры для каждого файла .csv , который имеется на диске. Возможно, некоторые хитрости Excel или файловая система
dir
пипетированных команд могут помочь вам создать эти операторы.
exec ReadFromCSV 'c:\1.csv
- Для каждого источника данных .mdb создайте временный связанный сервер.
ОБЪЯВИТЬ @MdbFilePath varchar (1000);
SELECT @MdbFilePath = 'C: \ MyMdb1.mdb';
EXEC master.dbo.sp_addlinkedserver @server = N'MY_ACCESS_DB_ ', @ srvproduct = N'Access', @ provider = N'Microsoft.Jet.OLEDB.4.0 ', @ datasrc = @ MdbFilePath
-- grab the relevant data
--your data's now in the table...
INSERT CsvImport(CustomerID,
SELECT [CustomerID]
,[LastName]
,[BirthDate]
FROM [MY_ACCESS_DB_]...[Customers]
--remove the linked server
EXEC master.dbo.sp_dropserver @server=N'MY_ACCESS_DB_', @droplogins='droplogins'
- Когда вы закончите импорт данных в эту таблицу хранения, создайте связанный сервер в вашем экземпляре SQL Server. Это целевое хранилище данных.
SELECT
данные из SQL Server в Access.
EXEC master.dbo.sp_addlinkedserver @server = N'MY_ACCESS_TARGET ', @ srvproduct = N'Access', @ provider = N'Microsoft.Jet.OLEDB.4.0 ', @ datasrc =' C: \ Target.mdb '
INSERT INTO [MY_ACCESS_TARGET]...[Customer]
([CustomerID]
,[LastName]
,[BirthDate])
SELECT Customer,
LastName,
BirthDate
FROM CsvImport