Службы SSIS, загружающие плоские файлы.csv с использованием For Each Loop Container: выполнить выражение задачи SQL, чтобы заполнить таблицу аудита счетчиком строк

Я загружаю много файлов.csv в таблицу SQL Server, используя SSIS (Visual Studio 2017).

Я использую для каждого контейнера петли. У меня есть две пользовательские переменные - FileName (строка) и RowCnt (int)

Я разработал таблицу аудита (dbo.FEfiles) для отслеживания каждого загруженного файла вместе с количеством записей в каждом файле.

Таблица аудита имеет две колонки:

1) FileName (varchar (20)

2) RowCount (int)

После настройки задачи "Поток данных" внутри контейнера "Для каждого цикла" у меня есть задача "Выполнение SQL", которая подключается к моей таблице аудита.

В этой задаче "Выполнение SQL" на вкладке "Выражение" в разделе "SQLStatementSource" у меня есть следующее выражение, чтобы получить только имя файла:

"INSERT INTO dbo.FEfiles (FileName) SELECT '" + @ [User:: Filename] + "'"

Это правильно анализирует, когда я оцениваю выражение, я получаю:

INSERT INTO dbo.FEfiles (FileName) ВЫБРАТЬ "filename.CSV"

Теперь, как мне добавить переменную для RowCnt с целочисленным типом данных?

Я перепробовал много вариантов, таких как приведенный ниже:

"INSERT INTO dbo.FEfiles (FileName, RowCount) SELECT '" + @ [Пользователь:: Имя файла] + "', + (DT_WSTR, 12) @[User::RowCnt] "

Когда я оцениваю выражение, я получаю следующее:

INSERT INTO dbo.FEfiles (FileName, RowCount) ВЫБРАТЬ "filename.CSV", + (DT_WSTR, 12) @ [User:: RowCnt]

Мне нужно вместо этого получить это: INSERT INTO dbo.FEfiles (FileName,RowCount) SELECT 'filename.CSV', 0

Можете ли вы помочь мне получить правильное выражение?

Я даже смотрел это видео, но не смог понять:

https://www.youtube.com/watch?v=Um7tDy9jZRs

1 ответ

Дайте это вихрь.

"INSERT INTO dbo.FEFiles (FileName,RowCount) VALUES ('" + @[User::Filename] + "'," +  (DT_WSTR, 12) @[User::RowCnt] + ")"

В комментариях пользователей необходимо было указать RowCount в скобках для имени столбца.

"INSERT INTO dbo.FEFiles (FileName,[RowCount]) VALUES ('" + @[User::Filename] + "'," + (DT_WSTR, 12) @[User::RowCnt] + ")"

Струнные части

"INSERT INTO dbo.FEFiles (FileName,[RowCount]) VALUES ('" 
+ 
@[User::Filename] 
+ 
"'," 
+  
(DT_WSTR, 12) @[User::RowCnt] 
+ 
")"
Другие вопросы по тегам