Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
SSIS 2014
по циклу грузится куча файлов CSV и JSON (парсится C# в SSIS )
(10 масок - файлы за каждый день - пока за 6 месяцев)
1 плохая строчка в 1 файле - СТОПАЕТ весь процесс - чего не хотелось бы
грузится все станд. средставами SSIS

в логе ошибок :
DF <Enquiries> CSV load:Error: The column delimiter for column "V_Id" was not found.
DF <Enquiries> CSV load:Error: An error occurred while processing file "d:\Eq-2016-07-31.csv" on data row 47.

1?)в CSV - лишнее поле - или нет кавычки
пример плохой строки :
"6425738","2016-07-31 20:27:15","0a21d8abacb65ed5049212384ed8f889@923a9db0fe.com",","",""

Повлиять на выгрузку я не могу.
Есть ли спосооб как то проверить это дело в SSIS
или на худой конец как то внешней утилитой прогнать файлы чтобы сразу определить есть ли плохие записи
чтобы процесс не остнавливался а шел дальше

зы в Оракле SQL*Loader выкидывал эти записи автоматом в bad Файлы
20 окт 16, 16:26    [19805372]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
зы да забыл
перенаправление ошибочных записей в элементах есть
т.е как бы ошибочные записи выводятся в err (на CSV Source) , err2 (на оле дб таргет)
но не соответвтие заданной структуре (лишнее поле )
все равно приводи к сбою
DF <Enquiries> CSV load:Error: The column delimiter for column "VId" was not found.
20 окт 16, 16:46    [19805488]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
имхо, удобнее (с точки зрения сопровождения) написать сорс на шарпе (скрипт таск) и в нём ловить эксепшн.

что хотите делать если из 1000 строк файла "битая" только одна (остальные грузить или нет)?

- если не грузить, то этим сорсом писать в набор в памяти и потом лить в базу (если не было ошибок)
- если грузить, то синхронно лить в пайп (откидывая битые строки в выход ошибок)
20 окт 16, 19:05    [19805949]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
aleks2
Guest
Гулин Федор
SSIS 2014
по циклу грузится куча файлов CSV и JSON (парсится C# в SSIS )
(10 масок - файлы за каждый день - пока за 6 месяцев)
1 плохая строчка в 1 файле - СТОПАЕТ весь процесс - чего не хотелось бы
грузится все станд. средставами SSIS

в логе ошибок :
DF <Enquiries> CSV load:Error: The column delimiter for column "V_Id" was not found.
DF <Enquiries> CSV load:Error: An error occurred while processing file "d:\Eq-2016-07-31.csv" on data row 47.

1?)в CSV - лишнее поле - или нет кавычки
пример плохой строки :
"6425738","2016-07-31 20:27:15","0a21d8abacb65ed5049212384ed8f889@923a9db0fe.com",","",""

Повлиять на выгрузку я не могу.
Есть ли спосооб как то проверить это дело в SSIS
или на худой конец как то внешней утилитой прогнать файлы чтобы сразу определить есть ли плохие записи
чтобы процесс не остнавливался а шел дальше

зы в Оракле SQL*Loader выкидывал эти записи автоматом в bad Файлы


Забить на SSIS - грузить BCP.
Быстрее раз в десять и ошибки оно умеет пропускать.
21 окт 16, 07:38    [19806880]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
Дедушка
имхо, удобнее (с точки зрения сопровождения) написать сорс на шарпе (скрипт таск) и в нём ловить эксепшн.

что хотите делать если из 1000 строк файла "битая" только одна (остальные грузить или нет)?

- если не грузить, то этим сорсом писать в набор в памяти и потом лить в базу (если не было ошибок)
- если грузить, то синхронно лить в пайп (откидывая битые строки в выход ошибок)


это возможно - но трудозатраты большие
тут это все таки исключения

посмотрю щас bcp

зы в иделае хочу как в скл-лоадер
с мин. телодвижениями
21 окт 16, 14:03    [19809193]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
"ThreadItemId","DateRecorded","FromEmail","InfinityVisitorId","EnquiredAboutId"

"0","2010-07-31 18:15:52","from_aa_00","inf_000","111111"
"100","2011-01-01 18:15:52","EMAIL 1","INF_001","444"

Не могу сообарзить как описать загурзку данных с кавычками
мат.часть вроде читал
1 строку поскипал ключом -f2
терминатор должен быть вроде как запятая
но тогда мешают кавычики
а опции чтобы поставить что поля заключены в кавычки я не нашел.

<RECORD>
 <!--  <FIELD ID="skip1" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="9"/> -->
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="9"/>
  <!-- <FIELD ID="skip2" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="9"/> -->
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="30"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="80"  />
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="70"  />
  <FIELD ID="5" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="12"/>
  <FIELD ID="EOF" xsi:type="CharTerm" TERMINATOR="\r\n" />
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="ThreadItemId" xsi:type="SQLINT"/>
  <COLUMN SOURCE="2" NAME="DateRecorded" xsi:type="SQLDATETIME"/>
  <COLUMN SOURCE="3" NAME="FromEmail" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="InfinityVisitorId" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="5" NAME="EnquiredAboutId" xsi:type="SQLINT"/>

 </ROW>
24 окт 16, 16:12    [19816555]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
Гулин Федор
терминатор должен быть вроде как запятая
кто ж кроме вас это знает... покажите код запуска bcp (и формат файл если используете его)
24 окт 16, 16:46    [19816727]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
измените в вашем формат файле разделитель полей на: "\",\""
24 окт 16, 16:51    [19816759]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
%BCP% IGLU_Marketing_DW.lnd.D2_Enquiry IN %datafile% -f D3.xml -F 2 -t'","' -r'\r\n' -k -S%servername% -T -R -e err_02.err


-t'","' -r'\r\n' вроде НЕ влияют если указан файл формата

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
 <!--  <FIELD ID="skip1" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="9"/> -->
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="9"/>
  <!-- <FIELD ID="skip2" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="9"/> -->
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="30"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="80"  />
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="70"  />
  <FIELD ID="5" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="12"/>
  <FIELD ID="EOF" xsi:type="CharTerm" TERMINATOR="\r\n" />
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="ThreadItemId" xsi:type="SQLINT"/>
  <COLUMN SOURCE="2" NAME="DateRecorded" xsi:type="SQLDATETIME"/>
  <COLUMN SOURCE="3" NAME="FromEmail" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="InfinityVisitorId" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="5" NAME="EnquiredAboutId" xsi:type="SQLINT"/>
<!--   <COLUMN SOURCE="6" NAME="key_log_load" xsi:type="SQLINT"/> -->
 </ROW>
</BCPFORMAT>


в файл ошибок выдает
#@ Row 1, Column 1: Invalid character value for cast specification @#
"100" "2011-01-01 18:15:52" "EMAIL 1" "INF_001" "444"
"200"
#@ Row 2, Column 1: Invalid character value for cast specification @#
"300" "2013-07-31 18:15:52" "emm_33" "" "333"
"6425223"
24 окт 16, 17:17    [19816882]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
сорсовый файл :
"ThreadItemId","DateRecorded","FromEmail","InfinityVisitorId","EnquiredAboutId"

"001","2010-07-31 18:15:52.234","from_aa_00","inf_000","111111"
"100","2011-01-01 18:15:52","EMAIL 1","INF_001","444"
"200","2012-07-31 18:15:52","em 2","","222"
"300","2013-07-31 18:15:52","emm_33","","333"
"6425223","2016-07-31 18:15:52","5a1141a32fbaa1fe4dcaa9b433489f3f@03b4d959e6.com","zz11","99836"
"6425224","2016-07-31 18:15:49","5a1141a32fbaa1fe4dcaa9b433489f3f@03b4d959e6.com","zz22","99836"


вот тестовый файл - я вижу что не так воспринимает bcp
В файле ошибок строка :
#@ Row 1, Column 1: Invalid character value for cast specification @#
"100" "2011-01-01 18:15:52" "EMAIL 1" "INF_001" "444"
"200"
24 окт 16, 17:21    [19816902]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
Дедушка
измените в вашем формат файле разделитель полей на: "\",\""


TERMINATOR=','
TERMINATOR="\",\""
ругается error in xml file
24 окт 16, 17:25    [19816918]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
https://www.sql.ru/forum/862602/formafile
посмотерв вроде дошло - идея
q поля для кавычек , z для запятых

<RECORD>
  <FIELD ID="q0" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="9"/>
  
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="9"/>
  <FIELD ID="z1" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="9"/>
  <FIELD ID="q1" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="9"/>
  
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR='"'  MAX_LENGTH="30"/>
  <FIELD ID="z2" xsi:type="CharTerm" TERMINATOR=',' MAX_LENGTH="9"/>
  <FIELD ID="q2" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="9"/>


<FIELD ID="EOF" xsi:type="CharTerm" TERMINATOR='\r' />

но копирутся записи ЧЕРЕЗ ОДНУ - 3 вместо 6 (1,3,5)
последний разделтиель ставил уже и \r и \n и \r\n - один черт
24 окт 16, 19:02    [19817325]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
aleks2
Guest
11.0
17
1 SQLCHAR 0 1 "\"" 1 DUMMY ""
2 SQLCHAR 0 12 "\",\"" 2 AIRPORT_ID ""
3 SQLCHAR 0 3 "\",\"" 3 AIRPORT_CODE Cyrillic_General_CI_AS
4 SQLCHAR 0 255 "\",\"" 4 AIRPORT_NAME Cyrillic_General_CI_AS
5 SQLCHAR 0 255 "\",\"" 5 AIRPORT_ADDR Cyrillic_General_CI_AS
6 SQLCHAR 0 255 "\",\"" 6 AIRPORT_CITY Cyrillic_General_CI_AS
7 SQLCHAR 0 2 "\",\"" 7 AIRPORT_STATE Cyrillic_General_CI_AS
8 SQLCHAR 0 15 "\",\"" 8 AIRPORT_ZIP Cyrillic_General_CI_AS
9 SQLCHAR 0 1 "\",\"" 9 AIRPORT_FLYA_IND Cyrillic_General_CI_AS
10 SQLCHAR 0 3 "\",\"" 10 AIRPORT_COUNTRY Cyrillic_General_CI_AS
11 SQLCHAR 0 255 "\",\"" 11 AIRPORT_WEB_ADDR Cyrillic_General_CI_AS
12 SQLCHAR 0 255 "\",\"" 12 AIRPORT_EMAIL Cyrillic_General_CI_AS
13 SQLCHAR 0 20 "\",\"" 13 AIRPORT_PHONE_NUMBER Cyrillic_General_CI_AS
14 SQLCHAR 0 20 "\",\"" 14 AIRPORT_FAX_NUMBER Cyrillic_General_CI_AS
15 SQLCHAR 0 10 "\",\"" 15 STATUS Cyrillic_General_CI_AS
16 SQLCHAR 0 24 "\",\"" 16 STATUS_DATE ""
17 SQLCHAR 0 1 "\"\r\n" 17 LAST_ACTIVITY_TYPE Cyrillic_General_CI_AS

"AIRPORT_ID","AIRPORT_CODE","AIRPORT_NAME","AIRPORT_ADDR","AIRPORT_CITY","AIRPORT_STATE","AIRPORT_ZIP","AIRPORT_FLYA_IND","AIRPORT_COUNTRY","AIRPORT_WEB_ADDR","AIRPORT_EMAIL","AIRPORT_PHONE_NUMBER","AIRPORT_FAX_NUMBER","STATUS","STATUS_DATE","LAST_ACTIVITY_TYPE"
"30","ABE","Allentown, PA","","Allentown","PA","18109","Y","","","","","","True","7/31/2003 3:46:59 PM","I"
"42","ABQ","Albuquerque International Sunport","P.O. Box 9948","Albuquerque","NM","87106","Y","USA","www.cabq.gov/airport","msantiago@cabq.gov","505 244 7700","505 842 4278","True","7/31/2003 3:46:59 PM","I"
"43","ABR","Aberdeen, SD","","Aberdeen","SD","57401","Y","","","","","","True","7/31/2003 3:46:59 PM","I"
24 окт 16, 19:11    [19817350]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
причем начиная с 2-й (2,4,6 )
мда ... чудеса в решете
24 окт 16, 19:12    [19817352]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
@aleks2
СПС -вижу что разделители там удобней
но хотелось бы сначала добить xml Формат - по идее должно работать и так


"\",\""
мне уже советовали но я не допер
я вот думаю Как это получается ","2010-07-3
кавычка и запятая ?
24 окт 16, 19:22    [19817368]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
Сделал fmt файл вроде по образу и подобию
1 SQLINT 0 1 "\"" 1 dummy ""
2 SQLINT 0 6 "\",\"" 2 ThreadItemId ""
3 SQLDATETIME 0 20 "\",\"" 3 DateRecorded ""
4 SQLCHAR 0 40 "\",\"" 4 FromEmail SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 20 "\",\"" 5 InfinityVisitorId SQL_Latin1_General_CP1_CI_AS
6 SQLINT 0 8 "\",\"" 6 EnquiredAboutId ""


что-то вообще не то - идет сдвиг
не могу сообразить смысл разделителя "\",\""
для строк Ж
"ThreadItemId","DateRecorded","FromEmail","InfinityVisitorId","EnquiredAboutId"
"000","2010-07-31 00:15:00","from_aa_00","inf_000","00000"
"001","2010-07-31 18:15:52.234","from_aa_001","inf_001","111111"

есть еще ?
последнне поле key_log_load в SSIS пакете счас заполняется (ид процесса загрузки - т.е вставляется запись в лог - и ее значение
возвращется SP )
а если грузить через bcp - можно как то записать это поле значением возвращенным из SP ?

зы да все равно все должно будет вызываться через SSIS 2012(2014)
1 ноя 16, 16:18    [19847062]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
Гулин Федор
что-то вообще не то - идет сдвиг
не могу сообразить смысл разделителя "\",\""
приведите пример, что у вас не так.
смысл в том, что этим вы говорите серверу резать поля по сочетанию трёх символов ","
1 ноя 16, 17:13    [19847443]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
aleks2
Guest
Гулин Федор
Сделал fmt файл вроде по образу и подобию
1 SQLINT 0 1 "\"" 1 dummy ""
2 SQLINT 0 6 "\",\"" 2 ThreadItemId ""
3 SQLDATETIME 0 20 "\",\"" 3 DateRecorded ""
4 SQLCHAR 0 40 "\",\"" 4 FromEmail SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 20 "\",\"" 5 InfinityVisitorId SQL_Latin1_General_CP1_CI_AS
6 SQLINT 0 8 "\",\"" 6 EnquiredAboutId ""


что-то вообще не то - идет сдвиг
не могу сообразить смысл разделителя "\",\""
для строк Ж
"ThreadItemId","DateRecorded","FromEmail","InfinityVisitorId","EnquiredAboutId"
"000","2010-07-31 00:15:00","from_aa_00","inf_000","00000"
"001","2010-07-31 18:15:52.234","from_aa_001","inf_001","111111"

есть еще ?
последнне поле key_log_load в SSIS пакете счас заполняется (ид процесса загрузки - т.е вставляется запись в лог - и ее значение
возвращется SP )
а если грузить через bcp - можно как то записать это поле значением возвращенным из SP ?

зы да все равно все должно будет вызываться через SSIS 2012(2014)


1. Пусть формат-файл сделает сам BCP. И не умничай с SQLINT - символьной загрузки добейся сначала.
2. Потом поправишь разделители.
3. Никто не мешает тебе заполнить "это поле значением возвращенным из SP" послe загрузки файла.
4. Настоящие джигиты грузят так
    create table #TB_AIRPORT ( 	dummy varchar(1) NULL,
	                            AIRPORT_ID int NOT NULL,
	                            AIRPORT_CODE char(3) NOT NULL,
	                            AIRPORT_NAME varchar(255) NULL,
	                            AIRPORT_ADDR varchar(255) NULL,
	                            AIRPORT_CITY varchar(255) NULL,
	                            AIRPORT_STATE char(2) NULL,
	                            AIRPORT_ZIP char(15) NULL,
	                            AIRPORT_FLYA_IND char(1) NULL,
	                            AIRPORT_COUNTRY char(3) NULL,
	                            AIRPORT_WEB_ADDR varchar(255) NULL,
	                            AIRPORT_EMAIL varchar(255) NULL,
	                            AIRPORT_PHONE_NUMBER varchar(20) NULL,
	                            AIRPORT_FAX_NUMBER varchar(20) NULL,
	                            [STATUS] varchar(32) NOT NULL,
	                            STATUS_DATE varchar(128) NOT NULL,
   	                            LAST_ACTIVITY_TYPE char(1) NOT NULL
                               );

    bulk insert #TB_AIRPORT
      from 'C:\Gate\In\Atlantis\Carnival\TB_AIRPORT.csv' 
      with ( FORMATFILE = 'C:\Gate\In\Atlantis\Carnival\TB_AIRPORT.fmt'
           , DATAFILETYPE = 'char'
           , CODEPAGE = 'RAW'
           , FIRSTROW = 2      
           --, ERRORFILE = 'C:\Gate\In\Atlantis\Carnival\TB_AIRPORT.err'
           );

5. Сам понимаешь - тут чо угодно можно дописать в таблицу.
1 ноя 16, 18:51    [19847817]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
Дедушка
Гулин Федор
что-то вообще не то - идет сдвиг
не могу сообразить смысл разделителя "\",\""
приведите пример, что у вас не так.
смысл в том, что этим вы говорите серверу резать поля по сочетанию трёх символов ","


СПС - золотые слова - символ \ экранирует - давно на C ничего не писал

 <RECORD>
  <FIELD ID="q0" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="9"/>
  
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR='\",\"' MAX_LENGTH="9"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR='\",\"'  MAX_LENGTH="30"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR='\",\"' MAX_LENGTH="80"  />
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR='\",\"' MAX_LENGTH="70"  />
  <FIELD ID="5" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="12"/>
  
  <!--   последняя кавычка  <FIELD ID="q5" xsi:type="CharTerm" TERMINATOR='"' MAX_LENGTH="3"/> -->  
  <FIELD ID="EOF" xsi:type="CharTerm" TERMINATOR='\r\n' />
 </RECORD>


"6692096","2016-08-30 18:08:50","b@bb.com",net"",""
"7771","2016-08-30 18:03:33","11@cc.com",11QWERTY","inf_01","111"
"7772","2016-08-30 18:03:33","22@dd.com",222BRED","inf_02","222"

в резульатет оно их даже не в BAD Файлы загнало
а просто загнало в 3 поле
11@сс.com",11QWERTY
что конечно лучше чем в SSIS когда пакет падал
2 ноя 16, 14:59    [19851246]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
aleks2
Гулин Федор
есть еще ?
последнне поле key_log_load в SSIS пакете счас заполняется (ид процесса загрузки - т.е вставляется запись в лог - и ее значение
возвращется SP )
а если грузить через bcp - можно как то записать это поле значением возвращенным из SP ?

зы да все равно все должно будет вызываться через SSIS 2012(2014)


1. Пусть формат-файл сделает сам BCP. И не умничай с SQLINT - символьной загрузки добейся сначала.
2. Потом поправишь разделители.
3. Никто не мешает тебе заполнить "это поле значением возвращенным из SP" послe загрузки файла.
4. Настоящие джигиты грузят так
    create table #TB_AIRPORT ( 	dummy varchar(1) NULL,
	                            AIRPORT_ID int NOT NULL,
	                            AIRPORT_CODE char(3) NOT NULL,
...


    bulk insert #TB_AIRPORT
      from 'C:\Gate\In\Atlantis\Carnival\TB_AIRPORT.csv' 
      with ( FORMATFILE = 'C:\Gate\In\Atlantis\Carnival\TB_AIRPORT.fmt'
           , DATAFILETYPE = 'char'
           , CODEPAGE = 'RAW'
           , FIRSTROW = 2      
           --, ERRORFILE = 'C:\Gate\In\Atlantis\Carnival\TB_AIRPORT.err'
           );

5. Сам понимаешь - тут чо угодно можно дописать в таблицу.


Вся оркекстровка идет в SSIS - соотвественно все должно оттуда вызываться
вручную оно конечно можно что угодно написать в t-sql

т.е елси юзать bcp с вызовом из SSIS пакета -
то надо в цикле For each container
1) Получать ключ лога
2) Вызывать bcp BAT файл с нужными параметрами (%1 - имя входного csv Файла )
3) а дальше мне надо в ландинговой таблице

update <Lnd_Table>
set key_log_load = ?
where key_log_load Is NULL

да такой вариант прокатит так как csv Файлы грузятся последовательно
(хотя и не оч. красиво )

к сожалению похоже нельзя вызваить в самом файле формата хотя бы след. значение секвенса
(в этом плане Sql*Loader с его ctl файлами сильно помощней будет - там что угодно можно вызвать )

Если кто юзает BCP из SSIS - велком прокомментировать
2 ноя 16, 15:09    [19851329]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
Гулин Федор,

автор
юзать bcp с вызовом из SSIS пакета


это с какой целью? Слон плохой, справка хороший, что ли?
2 ноя 16, 15:53    [19851561]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
Владислав Колосов
Гулин Федор,
автор
юзать bcp с вызовом из SSIS пакета

это с какой целью? Слон плохой, справка хороший, что ли?


Влад - цель описывалась в 1 посте :
1 плохая строка в csv (с лишней запятой и одним полем) валила весь ETL процесс ( импорт CSV станд. средставми SSIS)

изначальный вопроc был как этого избежать - предложили bcp (до этого я только на экспорт юзал его)
в принципе через bcp нав. получится надежней - но с бОльшими трудозатратами
(+ надо поместить файлы форматов в деплоймент пакет).

Вопрос как раз таки к тем кто реально юзал вызовы bcp из SSIS - какие там косяки и т.д и т.п
2 ноя 16, 17:12    [19852051]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
aleks2
Guest
Гулин Федор
Владислав Колосов
Гулин Федор,
пропущено...

это с какой целью? Слон плохой, справка хороший, что ли?


Влад - цель описывалась в 1 посте :
1 плохая строка в csv (с лишней запятой и одним полем) валила весь ETL процесс ( импорт CSV станд. средставми SSIS)

изначальный вопроc был как этого избежать - предложили bcp (до этого я только на экспорт юзал его)
в принципе через bcp нав. получится надежней - но с бОльшими трудозатратами
(+ надо поместить файлы форматов в деплоймент пакет).

Вопрос как раз таки к тем кто реально юзал вызовы bcp из SSIS - какие там косяки и т.д и т.п


Настоящий чувак не ищет лехких путей.
3 ноя 16, 06:32    [19853286]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
По-моему проще написать чек-утилиту с автокорректировкой, если "кривые" файлы приходят.
И грузить стандартными средствами :)
Может быть даже в том же SSIS пакете код скриптом разместить.
3 ноя 16, 10:58    [19854057]     Ответить | Цитировать Сообщить модератору
 Re: SSIS 2014 плохая запись в CSV  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1318
Владислав Колосов
По-моему проще написать чек-утилиту с автокорректировкой, если "кривые" файлы приходят.
И грузить стандартными средствами :)
Может быть даже в том же SSIS пакете код скриптом разместить.


возможно и так
правда корректировки точно не надо
а вот проверить было бы оч. неплохо
в наст. время станд. решение есть и оно работает
я проверюя есть ли лучше - еть ли смысл делать пакет с bcp
3 ноя 16, 18:33    [19857058]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить