Search

onze sponsors

microsoft_logo.gif


 

computrain_logo.JPG

Forum Login | Register
   Forum

 

Subject: Importeren verschillende CSV's
Prev Next
You are not authorized to post a reply.

Page 2 of 2 << < 12
Author Messages
Hennie BorrenbergsUser is Offline

Posts:4

07-01-2010 08:39:43 Alert 

Goedemorgen,

Ik heb  me zojuist geregistreerd op deze website omdat ik enkele dagen geleden deze erg interessant discussie over het importeren van verschillende CSV's las.

Inmiddels heb ik dit zo ongeveer draaien (dwz een soort metadata tabel met daarin de namen van de bronbestanden, de format files en de bestemmings-tabellen, en een ssis package met een bulk insert in een foreach loop container en 3 variabelen). De flat file connector maakt dus gebruik van een variabele, en de bulk insert in de de loop van 3.

Verder heb ik als test voor enkele tabellen (in totaal moet ik zo'n 130 csv's overpompen) een format file aangemaakt.

Nu zit ik met het volgende probleem:

De bulk insert van de csv's werkt alleen als in de format files alle data-types op SQLCHAR staan. Dus om dit te laten werken moeten van alle bestemmingstabellen ook alle kolommen van het type char (varchar) zijn. Dat is natuurlijk niet de bedoeling: uiteindelijk wil ik uiteraard dat bijv. een datum met data-type datum wordt opgeslagen. Ik heb tientallen internet-fora hierover doorgelezen, maar niemand lijkt er uit te komen. Het enige dat in de buurt komt is de bulk insert in een staging tabel of view te doen (waarvan dus alle data-types char zijn), en van daar uit de boel te transformeren (met de gewenste data-types) naar de uiteindelijke tabellen.

MAAR: dan is het hele principe van het hebben van maar 1 SSIS package overboord! Of heeft er iemand nog een goed idee?

 

Groet, Hennie

Hennie BorrenbergsUser is Offline

Posts:4

07-01-2010 08:39:46 Alert 

Goedemorgen,

Ik heb  me zojuist geregistreerd op deze website omdat ik enkele dagen geleden deze erg interessant discussie over het importeren van verschillende CSV's las.

Inmiddels heb ik dit zo ongeveer draaien (dwz een soort metadata tabel met daarin de namen van de bronbestanden, de format files en de bestemmings-tabellen, en een ssis package met een bulk insert in een foreach loop container en 3 variabelen). De flat file connector maakt dus gebruik van een variabele, en de bulk insert in de de loop van 3.

Verder heb ik als test voor enkele tabellen (in totaal moet ik zo'n 130 csv's overpompen) een format file aangemaakt.

Nu zit ik met het volgende probleem:

De bulk insert van de csv's werkt alleen als in de format files alle data-types op SQLCHAR staan. Dus om dit te laten werken moeten van alle bestemmingstabellen ook alle kolommen van het type char (varchar) zijn. Dat is natuurlijk niet de bedoeling: uiteindelijk wil ik uiteraard dat bijv. een datum met data-type datum wordt opgeslagen. Ik heb tientallen internet-fora hierover doorgelezen, maar niemand lijkt er uit te komen. Het enige dat in de buurt komt is de bulk insert in een staging tabel of view te doen (waarvan dus alle data-types char zijn), en van daar uit de boel te transformeren (met de gewenste data-types) naar de uiteindelijke tabellen.

MAAR: dan is het hele principe van het hebben van maar 1 SSIS package overboord! Of heeft er iemand nog een goed idee?

 

Groet, Hennie

Arjan FraaijUser is Offline

Posts:110

07-01-2010 11:01:34 Alert 
Hennie,

Wat zijn je errors in de BCP stappen?

Gr,
Arjan
Hennie BorrenbergsUser is Offline

Posts:4

10-01-2010 16:51:04 Alert 
Arjan,

Excuses voor de late reactie (ik was ziek).

De errors (ik doe de bulk insert vanuit ssis):

[Bulk Insert Task] Error: An error occurred with the following error message: "Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 9, column 1 (rf502_obj).Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 8, column 1 (rf502_obj).Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 7, column 1 (rf502_obj).Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 6, column 1 (rf502_obj).Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 5, column 1 (rf502_obj).Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 4, column 1 (rf502_obj).Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 3, column 1 (rf502_obj).Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 1 (rf502_obj).Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (rf502_obj).".

Dit ligt ook voor de hand, het data type, van de eerste kolom in de tabel is decimal (12,4).
Als ik met BCP de formatfile van de bestemming-tabel genereer, krijg ik de volgende format file. Ik heb zelf wel de delimiters toegevoegd zoals die in de csv file staan.

10.0
3
1 SQLCHAR 0 19 ";" 1 rf502_obj ""
2 SQLCHAR 0 20 ";" 2 rf502_code SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 50 "\r\n" 3 rf502_desc SQL_Latin1_General_CP1_CI_AS

Het probleem is dus dat (ook volgens microsoft) bulk insert van een flat file alleen maar werkt met CHAR datatype. Maar als ik de csv file met bovenstaande formatfile importeer (mbv BULK INSERT) krijg ik dus de error om dat de eerste kolom (in de destination tabel) datatype DECIMAL is.
Maar als ik hier nu CHAR van maak dan moet ik dus daarna de hele boel nog een keer overzetten om het in de gewenste datatypes-te krijgen, en dan is het hele principe van het hebben van maar 1 import Package overboord :-(
You are not authorized to post a reply.
Page 2 of 2 << < 12

Forums > Forums > Business Intelligence > Importeren verschillende CSV's



ActiveForums 3.6
  
Copyright (c) 2012 PASS Nederland   Privacy Statement  Terms Of Use