SSIS, excel kaynak dizgisini yüzmeye zorlamak


9

Excel'de metin olması gereken bir sütun vardır, ancak SSIS burada sayısal metin görür ve bunu otomatik olarak çift duyarlıklı kayan nokta yapar [DT_R8].

Çıktı dalının Dış ve Çıktı sütunlarında el ile değiştirebilirim, ancak Hata Çıkışı sadece ilgili sütunu değiştirmeme izin vermez.

Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".

Paket xml değiştirmeyi denedim. Denedim IMEX=1ve typeguessrow=0hiçbiri sorunumu çözmedi. Bunun herhangi bir düzeltmesi var mı? Ayrıca, excel'in veri türünü tahmin etmeden önce varsayılan 8 satırdan daha fazlasını okuyabilmesi için kayıt defterinizi değiştirmenizi öneren makaleler de vardır. Bu rotaya gitmek istemiyorum çünkü çalışsa bile, paketi çalıştırmayı planladığım makinedeki kayıt defterini değiştirmek zorunda kalacağım.

SQL nvarchar alanına aktarılacak excel alanı örneğin

295.3
296.33

ancak SQL tablosuna şu şekilde yazılıyor:

295.30000000000001
296.32999999999998

Veri görüntüleyicileri yerleştirdim ve alanlar gösteriliyor

295.3
296.33

doğru olan yürütme yoluyla tüm yol ama OLE DB Hedef kaynak isabet ne zaman bir şekilde onu dönüştürür sanırım

295.30000000000001
296.32999999999998

hangisi yanlış.

Ayrıca V321.1 ve V213.34 gibi kesin olarak tamsayı olmayan ve varchar olarak saklanması gereken değerlere sahibim.


Yorumlar uzun tartışmalar için değildir; bu sohbet sohbete taşındı .
Paul White 9

Yanıtlar:


2

Dosyayı, bir metin dosyası gibi içe aktarılabilen ve bu sorunla karşılaşmayacak bir .csv dosyası olarak almak mümkün müdür? Genel olarak tüm Excel dosyalarını geri atarım ve başka bir format isterim çünkü SSIS ve Excel birçok seviyede birlikte iyi oynamazlar.


1
Ben yakın gelecekte .csv veya txt dosya değişikliği umuyoruz. işleri çok daha kolaylaştıracak.
Juan Velez

2

Bu sorunu çözmenin bir yolu yok gibi görünüyor. Excel, sütundaki ilk birkaç veri satırına bakar ve veri türünü her ne olursa olsun FLOAT'a zorlar. İlk birkaç satırda (8+) birkaç varchar karakter içeren bir şablon oluşturma çözümü verildi, böylece EXCEL veri türü olarak alıp verilerimi içeri aktaracak. Kaynak Kasası kullandığım için yardımcı olan şey, Visual Studio'nun önceden tanımlanmış veri türlerimi değiştirememesi için paket dosyamı "Salt Okunur" hale getirmesi için bir dosyaya "Check In" yapabiliyor.


1

Adım 1: IMEX=1; MAXROWSTOSCAN=0Bağlantı dizesini ekleyin (örn. Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\filename.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1; MAXROWSTOSCAN=0").

Adım 2: Çözümü kapatın. SSIS paketini metin düzenleyicide açın, önceden tanımlanmış veri türüne geri döndürülen sütunları bulun. XML dosyasında manuel olarak istenen biçime güncelleyin.

Adım 3: Paketi SQL Server Veri Aracı'nda açın ve çalıştırın, şimdi verileri dosyadan olduğu gibi yükleyebilmeniz gerekir.


Üzgünüz, ancak kaynak veri türü pakette değil. Yalnızca hedef sütun türleri. Dönüşüm yine Microsoft.Ace sürücüsü (veya hangi sürücü seçilirse seçilsin) tarafında gerçekleştiğinden ve SSIS ve hedef tabloya girdiği anda veri kaybı gerçekleştiğinden, bu amaç yine yenilgiye uğrar.
Ters Mühendis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.