У меня уже есть несколько таблиц в SQL Server, и я пишу программу C # для заполнения таблиц из некоторых плоских файлов. Я планирую использовать SQLBulkCopy
для загрузки таблиц.
Может быть много работы по определению всех столбцов для каждого DataTable для SQLBulkCopy. Является ли простой способ генерировать эти DataTables в C # из определения существующих таблиц SQL Server?
Я не могу использовать Bulk insert
или bcp
потому что плоские файлы находятся в другом странном макете, и перед вставкой они должны быть проанализированы некоторым кодом C #.
Если вы хотите использовать метод грубой силы, вы можете использовать следующие таблицы для каждой таблицы:
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection("Some SQLConnectionString")) {
conn.Open();
using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT TOP 0 * FROM SomeTable", conn))
{
adapter.Fill(dt);
};
};
SELECT TOP 0
вернет только структуру таблицы без записей.
Если вы ищете быстрый способ загрузки плоских файлов в SQL, вы можете использовать BULK INSERT. Просто укажите разделитель и до тех пор, пока столбцы в ваших файлах будут выложены в том же порядке, что и таблица базы данных, все будет автоматически отображено. Вам нужно дополнительное разрешение для выполнения массовых вставок, но, по моему опыту, это самый быстрый и эффективный способ обработки процесса.
BULK INSERT Database.dbo.Table
FROM 'C:\inetpub\website\file.csv'
WITH (FIELDTERMINATOR = ',')