Excel сообщает в базу данных SQL Server 2005 - PullRequest
1 голос
/ 20 апреля 2011

Мне ежедневно дают лист Excel и я хочу загрузить их в существующую базу данных с точно такими же именами столбцов, я хотел сделать это в SQL Server 2005, но потом я подумал, что будет проще создать asp. Чистая программа, которая могла бы делать это автоматически, чтобы менеджеры могли делать это сами.

я бы использовал массовую вставку?

и как мне импортировать лист Excel в таблицу данных?

Edit: Я получил первую часть на работу

handling time 
1:12:53
1:06:29
0:10:58
0:13:33
1:15:45
0:41:19

это одна из моих колонок на листе Excel (чч: мм: сс)

однако, когда я делаю массовое копирование в поле varchar

я получаю

12/30/1899 1:12:53 AM
12/30/1899 1:06:29 AM
12/30/1899 12:10:58 AM
12/30/1899 12:13:33 AM
12/30/1899 1:15:45 AM
12/30/1899 12:41:19 AM

1 Ответ

1 голос
/ 20 апреля 2011

да, я бы предложил вам использовать SqlBulkCopy

DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
            DbDataAdapter adapter = factory.CreateDataAdapter();
            DbCommand selectCommand = factory.CreateCommand();
            selectCommand.CommandText = "SELECT ColumnNames FROM [Sheet1$]";
            DbConnection connection = factory.CreateConnection();
            connection.ConnectionString = connectionString;
            selectCommand.Connection = connection;
            adapter.SelectCommand = selectCommand;
            DataTable dtbl = new DataTable();
            adapter.Fill(dtbl);

            if (dtbl.Rows.Count > 0)
{
 using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destConnection))
        {
            bulkCopy.ColumnMappings.Add("ColumnName", "ColumnName");
            bulkCopy.ColumnMappings.Add("ColumnName", "ColumnName");

            bulkCopy.DestinationTableName = "DBTableName";
            bulkCopy.WriteToServer(dtblNew);
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...