Службы 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
Можете ли вы помочь мне получить правильное выражение?
Я даже смотрел это видео, но не смог понять:
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]
+
")"