Поскольку это Adaptive Server Enterprise, SqlConnection
не работает, поэтому мне нужно перейти к чему-то другому, например, OdbcConnection
или еще (если у вас есть рекомендации).
Таблица базы данных sybase (скажем, таблица Customer
) содержит довольно много миллионов записей, и каждый раз, когда я запускаю программу, я собираюсь выдвинуть еще несколько тысяч записей из Excel к таблице Sybase Customer
. Из-за количества, я должен идти с кодом массового копирования. Предполагая, что в таблице базы данных уже есть миллионы записей, а в файле Excel есть еще 10 000 записей, я не могу просматривать записи Excel одну за другой, поэтому скопируйте код, пожалуйста.
Еще одна вещь, которую я должен рассмотреть: таблица Sybase может уже содержать некоторые записи в файле Excel, поэтому я не могу использовать оператор SQL Insert Into
, поскольку записи уже существуют в таблице Sybase Customer
, Мне может понадобиться использовать оператор SQL Update
. В файле Excel есть несколько возможных записей об ошибках (которые не будут приняты таблицей Sybase), мне также потребуется использовать оператор Try Catch
, чтобы перехватить это исключение.
Как попробовать мой код для массового копирования записей из Excel (xlsx) в Sybase Adaptive Server Enterprise?
Спасибо.
Справочная информация: Очень плохо знаком с C #, не закончил код, не скомпилировал код.
private void importExcelStripMenuItem_Click(object sender, EventArgs e)
{
var filePath = string.Empty;
OpenFileDialog OpenFile = new OpenFileDialog();
OpenFile.Filter = "Excel Files|*.xl*"; //Filter for excel file
OpenFile.Title = "Select your file";
OpenFile.FilterIndex = 2;
OpenFile.RestoreDirectory = true;
if (OpenFile.ShowDialog() == DialogResult.OK)
{
//Get the path of specified file
filePath = OpenFile.FileName;
}
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(filePath);
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; //Only one sheet in the workbook
// SET A CONNECTION WITH THE EXCEL FILE.
OdbcConnection myExcelConn = new OdbcConnection("Driver={Microsoft Excel Driver (*.xls)}; DBQ=" + filePath +"; DriverID=790");
try
{
myExcelConn.Open();
// GET DATA FROM EXCEL SHEET.
//Select all fields from the excel file, but prefer not to use SELECT * FROM ...., due to there may be irrevalent data in other columns, I only copy first 6 columns, Sybase table Customer has only those 6 fields too.
OdbcCommand ObjCmd = new OdbcCommand("SELECT SocialSecurityNumber, FirstName, LastName, Gender, DOB, PhoneNumber FROM [" + xlWorksheet.Name + "$]", myExcelConn);
// READ THE DATA EXTRACTED FROM THE EXCEL FILE.
OdbcDataReader objBulkReader = null;
objBulkReader = ObjCmd.ExecuteReader();
//Close Excel file
xlWorkbook.Close(false);
xlApp.Quit();
// SET THE CONNECTION STRING.
using (OdbcConnection con = new OdbcConnection("Sybase ASE Connection String"))
{
con.Open();
// FINALLY, LOAD DATA INTO THE DATABASE TABLE.
//I don't know how to write this portion of code.
}
MessageBox.Show("Successfully Loaded.");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
// CLEAR.
//Clear other objects happened during bulk copy
myExcelConn.Close();
myExcelConn = null;
}
}
Ожидание: Завершите код, который сможет импортировать (Bulk Copy) записи из Excel в таблицу Sybase.