Для вставки миллионов строк я использовал BULK INSERT, записывая данные в файл CSV, к которому имеет доступ экземпляр SQL Server. Это превосходит любой тип вставки через JDBC, но за счет снижения гибкости. Для меньшего числа строк можно использовать JDBC Statement.addBatch()
и Statement.executeBatch()
, чтобы избежать накладных расходов на отправку множества небольших команд.
В зависимости от ваших требований вам, возможно, придется объединить все это в одну транзакцию, или вы сможете разделить ее на несколько транзакций, если не требуются полные гарантии ACID для всего набора данных.
Вот статья, в которой обсуждается массовая вставка XML . У меня нет данных, на которых можно было бы сделать какие-либо выводы, но я бы предположил, что BULK INSERT необработанные данные строк будут быстрее, поскольку преобразование OPENXML не требуется. Конечно, если ваши данные уже находятся в XML, то это имеет смысл, но если нет, то использование табличных данных, вероятно, является самым простым и, возможно, наиболее производительным.