Как обновить таблицу SQL данными CSV? - PullRequest
3 голосов
/ 27 августа 2010

Я пытаюсь обновить одну из моих таблиц SQL новыми столбцами в исходном CSV-файле. Эти записи CSV в этом файле уже находятся в моей таблице SQL, но в них отсутствуют некоторые столбцы из этого файла CSV.

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

Я пытаюсь использовать SSIS 2008 для этого. Я создал источник данных в формате CSV. Затем я добавил команду OLE DB. И я установил команду SQL следующим образом:

update berkeley.dbo.j5c_ALL_DATA 
set disabilitycode=[Stu Pri Dis],
IEPID=SpecED
,[MT_AR_CR]=[Met At-Rsk Crit]
      ,[ECP]=[Early Childhood Program]
      ,[REF_CFC]=[Ref by CFC]
      ,[IEP_COM_DT]=[IEP Cmp Date]
      ,[E1_NUM]=[EI Nbr]
      ,[RDIT]=[Reason for Delay in Transition]
      ,[MT_PFA_HI]=[Met PFA Inc Crt]
      ,[FS]=[Family Structure]
      ,[Hm_Sch_RCDTS]=[RCDTS Home]
      ,[Srv-Sch_RCDTS]=[RCDTS Serve]
from berkeley.dbo.j5c_ALL_DATA A join Berkeley_CSV2 b ON
A.studentid = B.[SAP ID] and A.BegEnrollDate = B.[Enroll Date]

где Berkeley_CSV2 - имя моего менеджера соединений с плоскими файлами CSV. Но на этом я получаю ошибку:

The connection manager "Berkeley_CSV2" is an incorrect type.  The type required is "OLEDB".  The type available to the component is "FLATFILE".

Можете ли вы порекомендовать мне альтернативный способ добавления этих данных или другую команду SQL?

1 Ответ

5 голосов
/ 27 августа 2010

Лучший способ справиться с этим - это несколько шагов.Не выбрасывайте свою текущую работу;он будет использоваться как часть другого решения.

Сначала создайте промежуточную таблицу в своей базе данных.Это будет промежуточное и временное расположение для данных из плоского файла.Чтобы упростить последующие шаги, может быть лучше создать столбец для каждого поля в плоском файле, даже если некоторые данные не понадобятся.Создайте таблицу, прежде чем вернуться к дизайну SSIS.

В SSIS создайте диспетчер соединений OLE DB с вашей базой данных, а другой - с вашим плоским файлом.Возможно, у вас уже есть это, учитывая информацию в вашем вопросе.

Создайте задачу потока данных.В задаче «Поток данных» создайте источник плоского файла и свяжите его с вашим плоским файлом.Создайте пункт назначения OLE DB и свяжите его с промежуточной таблицей.Сопоставьте путь потока данных от источника к месту назначения.

Следующий шаг - адаптация вашей команды OLE DB для работы с данными в новой таблице.В рабочей области «Поток управления» создайте ограничение приоритета (линию между двумя задачами) из новой задачи «Поток данных» в существующую команду OLE DB.Сначала будет запущен поток данных, а затем команда OLE DB.

Измените сценарий SQL в команде OLE DB, чтобы он ссылался на новую таблицу и связанные имена столбцов.Скрипт не должен ссылаться на файл.Я не думаю, что в сценарии SQL нужны какие-либо другие изменения.

...