Cognos
August 13, 2019

ASCIIOutput a tab delimited file + BULK INSERT

Если необходимо экспортнуть в SQL Server значительное количество строк, то вместо SQL инструкций в процессе ТМ1 выгодней использовать связку ASCIIOutput и BULK INSERT

1.

ASCIIOutput( FilePath, YYYY, Months, Factory, Item, Kontragent, VersionBudget, STR(ROUNDP(Summa, 2), 0, 2) );

DatasourceASCIIDelimiter=Char(9);

DatasourceASCIIQuoteCharacter='';

2.

TextOutput

SetOutputCharacterSet

3.

BULK INSERT [DWH_DR].[dbo].[StgTM1BDDS_temp]
FROM '\\kg-bi-db-3\DATA ROOM Land zone\Budget Model LZ\BDDS.txt'
WITH
(CODEPAGE = '1251',
DATAFILETYPE = 'char')

пример процесса

Пролог

ODBCOpen('DWH', 'login', 'pass');
ODBCOutPut( 'DWH', Expand( 'truncate table dbo.Stg'));
DatasourceASCIIDelimiter=Char(9);
DatasourceASCIIQuoteCharacter='';
FilePath = '\\.......\S.txt' ;

Метаданные

ASCIIOutput( FilePath, YYYY, Months, Factory, Item, Kontragent, VersionBudget, STR(ROUNDP(Summa, 2), 0, 2) ) ;

Эпилог

SQL = 'BULK INSERT [DWH].[dbo].[Stg] FROM ''\\.......\S.txt'' WITH (CODEPAGE = ''1251'', DATAFILETYPE = ''char'', TABLOCK)' ;
ODBCOutPut( 'DWH', Expand( SQL));
ODBCClose('DWH_DR');