В этом ответе я предоставлю 2 подхода для достижения этой цели:
- с использованием SSIS
- с использованием C #
(1) подход SSIS
Вы должны получить список таблиц Access в переменную типа System.Object, а затем перебрать имена таблиц, используя контейнер цикла по каждому элементу.Есть много ссылок, которые дают подробную информацию, например, вы можете сослаться на следующий ответ SO, который он может дать вам некоторые идеи:
(2) Подход C #
Недавно я начал новый проект на Git-Hub, который является библиотекой классов, разработанной с использованием C #.Вы можете использовать его для импорта табличных данных из excel, word, powerpoint, text, csv, html, json и xml в таблицу сервера SQL, имеющую другое определение схемы с использованием подхода сопоставления схем.проверить это по адресу:
Вы можете использовать подобный код:
string con = @"Data Source=.\SQLInstance;Initial Catalog=tempdb;integrated security=SSPI;";
using (SchemaMapperDLL.Classes.Converters.MsAccessImport smAccess = new SchemaMapperDLL.Classes.Converters.MsAccessImport(@"U:\Passwords.mdb"))
{
using (SchemaMapperDLL.Classes.SchemaMapping.SchemaMapper SM = new SchemaMapperDLL.Classes.SchemaMapping.SchemaMapper("dbo","passwords"))
{
SM.CreateDestinationTable(con);
//Read Access
smAccess.BuildConnectionString();
smAccess.getSchemaTable();
foreach (DataRow schRow in smAccess.SchemaTable.Rows)
{
string strTablename = schRow["TABLE_NAME"].ToString().Trim('\'');
DataTable dt = smAccess.GetTableByName(strTablename);
bool result = SM.ChangeTableStructure(ref dt);
if (result == true)
{
SM.InsertToSQLUsingSQLBulk(dt, con);
}
}
}
}