2013-10-10 4 views
6

Мне нужно создать процесс для импорта таблицы с несколькими вкладками Excel в SQL Server 2008R2. Каждая вкладка будет другой таблицей в базе данных. Это нужно будет делать еженедельно, а импорт должен быть автоматизирован. В идеале я хочу поместить электронную таблицу в папку [или у нее есть какой-то стажер) и выполнить sql-процедуру, которая просматривает эту папку, и добавляет данные в таблицы в этом db. Я также хотел бы иметь еще одну таблицу, которая отслеживает импорт и отметки даты. Я действительно не знаю, где даже начать здесь, поскольку я довольно огромный noob, когда дело доходит до tsql.Импорт Excel в SQL Server 2008

ответ

2

Если вы ограничены исключительно TSQL, вышеупомянутые два ответа покажет вам некоторые идеи. Если у вас есть доступ к Data Tools или Business Intelligence, с SSIS, вы можете автоматизировать его с предположением, что каждый лист в книге Excel соответствует каждому разу. С помощью SSIS вы будете использовать задачу потока данных, и каждый лист будет импортирован в нужную таблицу. Когда вы будете готовы к файлу на следующей неделе, вы поместите его в папку и запустите пакет SSIS.

Однако, если имена листов изменяются (например, недельные листы называются кошками, собаками, дождем, а на следующей неделе это Sulphur, Fire, Hell), то это может привести к поломке пакета. В противном случае, если меняются только данные на рабочем листе, это может быть полностью автоматизировано с помощью SSIS.

Пример статьи: https://www.simple-talk.com/sql/ssis/moving-data-from-excel-to-sql-server---10-steps-to-follow/

+0

Я прочитал статью и, похоже, довольно ightforward. Будет ли я создавать другую ветку потока данных для каждой вкладки \ таблицы? – d90

+0

@NicholasJDininno С несколькими листами у меня бы была одна задача потока данных, и в рамках этой задачи потока данных есть несколько источников Excel с несколькими назначениями ADO.NET или OLE DB Connection. Если вы выберете, вы можете сделать несколько потоков данных; тебе решать. – Question3CPO

5

Существует хорошая статья от microsoft - http://support.microsoft.com/kb/321686 - которая описывает вовлеченные процессы.

Процесс просто

SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 
    'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$] 

Где XLImport3 это таблица, которую нужно импортировать в и DataSource является лист первенствовать вы хотите импортировать данные.

+0

Вам необходимо включить использование 'Ad Hoc Distributed Queries' с помощью sp_configure для того, чтобы использовать 'OpenDatasource' – illumi

2

Ниже приведен код для вставки данных из файла csv в заданную таблицу. Я не совсем то, что нужно для проекта, но если бы я был вами, я бы просто разделил каждую таблицу на другой файл, а затем просто запустил proc, который вставляет данные в каждую из таблиц.

BULK 
INSERT TABLE_NAME 
FROM 'c:\filename.csv' 
WITH 
(
    FIELDTERMINATOR = ',', 
    ROWTERMINATOR = '\n' 
) 

insert into import_history ('filename', 'import_date') values ('your_file_name', getdate()) 

Кроме того, для таблицы, которая отслеживает импорт и временную метки их, вы можете просто вставить некоторые данные в эту таблицу после каждой массовой вставки, как показаны выше.

Кроме того, здесь ссылка на учебник по насыпной вставки из файла CSV, который может также помочь: http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/

0

Его очень просто. Щелкните правой кнопкой мыши базу данных в SQL Server (2008), выберите Tasks и выберите Import Data

enter image description here



Теперь измените DataSource на Microsoft Excel. Выберите путь к файлу Excel, нажав кнопку Browse и нажмите Next.

enter image description here



Выбрал Sql Server instance и выбрал базу данных, в которой Excel для импорта.

enter image description here



Выберите Copy data from one or more tables or views и нажмите Next.

enter image description here



Теперь выберите листы, которые будут импортированы в Sql Server.

enter image description here



Нажмите Next

enter image description here



Теперь нажмите Finish

enter image description here



Теперь мастер импортирует данные из Excel в Sql Server и нажмите Close.

enter image description here



Вот таблица

enter image description here

+0

Смотрите, где OP говорит: «... должно быть автоматизировано ...» – kfm2000

Смежные вопросы