SQLBulkCopy в SQL Server невероятно быстр. К сожалению, я обнаружил, что OracleBulkCopy намного медленнее. Также у него есть проблемы:
На самом деле System.Data.OracleClient.OracleDataAdapter работает быстрее, чем OracleBulkCopy, если вы хотите заполнить таблицу небольшими записями, но множеством строк. Однако вам нужно настроить размер пакета, оптимальный BatchSize для OracleDataAdapter меньше, чем для OracleBulkCopy.
Я провел свой тест на компьютере с Windows 7 с исполняемым файлом x86 и 32-битным клиентом ODP.Net 2.112.1.0. , OracleDataAdapter является частью System.Data.OracleClient 2.0.0.0. Мой набор тестов составляет около 600 000 строк с максимальным размером записи. 102 байта (средний размер 43 символа). Источником данных является текстовый файл размером 25 МБ, читаемый построчно как поток.
В моем тесте я построил таблицу входных данных до фиксированного размера таблицы, а затем использовал OracleBulkCopy или OracleDataAdapter для копирования блока данных на сервер. Я оставил BatchSize как 0 в OracleBulkCopy (чтобы текущее содержимое таблицы копировалось как один пакет) и установил для него размер таблицы в OracleDataAdapter (опять же, это должно создать один пакет внутри). Лучшие результаты:
Для сравнения:
Тот же клиентский компьютер, тестовым сервером является SQL Server 2008 R2. Для SQL Server массовое копирование - это, безусловно, лучший способ. Это не только в целом быстрее, но нагрузка на сервер также ниже, чем при использовании адаптера данных. Жаль, что OracleBulkCopy не предлагает такой же интерфейс - API BulkCopy гораздо проще в использовании, чем DataAdapter.
Вы можете взглянуть на:
HSSFDateUtil.isCellDateFormatted()
Более подробную информацию о HSSFDateUtil см. В API формата POI ужасной электронной таблицы:
http://poi.apache.org/apidocs/org/ apache / poi / hssf / usermodel / HSSFDateUtil.html
Это также предоставляет некоторые вспомогательные методы для возврата данных Excel getExcelDate ()
и Java-дат getJavaDate ()
. Однако вам следует быть осторожными с разными форматами даты ...
Excel обрабатывает дату и время как числа ... Джон сказал это лучше, поэтому я не буду повторять его здесь ...
Однако, образец кода для того, что вы задали в вопросе, находится на http://poi.apache.org/spreadsheet/quick -guide.html # CellContents
Если вы используете POI 3.5, вы можете использовать следующий метод
cell.getDateCellValue (). Это будет работать и для Excel 2007.