Aracılığıyla paylaş


Komut dosyası göreve boş bir düz dosya olarak algılanıyor

Düz dosya kaynağını denemeden önce dosyayı işlemek, düz bir dosya veri satırı içeren olup olmadığını belirlemez.Paket, özellikle çok sayıda düz dosya üzerinde herhangi bir veri satırı içeren dosyaları'nı atlayarak yinelenen bir paketin verimliliğini artırmak isteyebilirsiniz.Komut dosyası görev önce boş bir düz dosya arayabilirsiniz paket veri akışı işlemeye başlar.

Not

Birden çok paket arasında daha kolay yeniden kullanabileceğiniz bir görev oluşturmak isterseniz, bu komut görevin örnek kodu özel bir görev için başlangıç noktası olarak kullanarak göz önünde bulundurun.Daha fazla bilgi için bkz:Özel görev geliştirme.

Açıklama

Aşağıdaki örnek yöntemleri kullanan System.ıo ad alanı olup olmadığını dosya boş veya yalnızca içerdiği olup olmadığını belirlemek için düz dosya Bağlantı Yöneticisi içinde belirtilen dosya düz sınamak için veri dışı satır, sütun başlıkları ya da boş bir satır bekleniyordu.Komut dosyasının boyutunu denetler; boyutu sıfır bayt, dosya boş.Dosya boyutunun sıfırdan büyükse, daha fazla satır kadar ya da satır sayısını, beklenen veri dışı satır sayısını aşıyor kadar komut satırı dosyadan okur.Dosyadaki satır sayısını, beklenen veri dışı satır sayısına eşit veya daha az ise, dosya boş düşünülür.Sonuç değeri, paketin denetim akışı dallanma için kullanılabilecek bir kullanıcı değişkenini bir Boole değer olarak döndürülür.The FireInformation method also displays the result in the Output window of the Microsoft Visual Studio Tools for Applications (VSTA).

Bu komut dosyası görev örnek yapılandırmak için

  1. Oluşturma ve adlı düz dosya bir Bağlantı Yöneticisi'ni yapılandırma EmptyFlatFileTest.

  2. Adlı bir tamsayı değişken oluşturun. FFNonDataRows ve küme değerine düz dosyasında beklenen veri dışı satır sayısı.

  3. Adlı bir Boole değişkeni oluşturun. FFIsEmpty.

  4. Ekleme FFNonDataRows komut dosyası görevin bir değişkene ReadOnlyVariables özellik.

  5. Ekleme FFIsEmpty komut dosyası görevin bir değişkene ReadWriteVariables özellik.

  6. Kodunuzda alma System.IO ad alanı.

Tek bir düz dosya Bağlantı Yöneticisi'ni kullanmak yerine bir Foreach dosya numaralayıcı ile dosyalar üzerinde yineleme, Enum değeri yerine, Bağlantı Yöneticisi ' saklanacağı değişkenin yol ve dosya adı'nı edinmek için aşağıdaki örnek kodu değiştirmeniz gerekir.

Code

  Public Sub Main()

    Dim nonDataRows As Integer = _
        DirectCast(Dts.Variables("FFNonDataRows").Value, Integer)
    Dim ffConnection As String = _
        DirectCast(Dts.Connections("EmptyFlatFileTest").AcquireConnection(Nothing), _
        String)
    Dim flatFileInfo As New FileInfo(ffConnection)
    ' If file size is 0 bytes, flat file does not contain data.
    Dim fileSize As Long = flatFileInfo.Length
    If fileSize > 0 Then
      Dim lineCount As Integer = 0
      Dim line As String
      Dim fsFlatFile As New StreamReader(ffConnection)
      Do Until fsFlatFile.EndOfStream
        line = fsFlatFile.ReadLine
        lineCount += 1
        ' If line count > expected number of non-data rows,
        '  flat file contains data (default value).
        If lineCount > nonDataRows Then
          Exit Do
        End If
        ' If line count <= expected number of non-data rows,
        '  flat file does not contain data.
        If lineCount <= nonDataRows Then
          Dts.Variables("FFIsEmpty").Value = True
        End If
      Loop
    Else
      Dts.Variables("FFIsEmpty").Value = True
    End If

    Dim fireAgain As Boolean = False
    Dts.Events.FireInformation(0, "Script Task", _
        String.Format("{0}: {1}", ffConnection, _
        Dts.Variables("FFIsEmpty").Value.ToString), _
        String.Empty, 0, fireAgain)

    Dts.TaskResult = ScriptResults.Success

  End Sub
public void Main()
        {
            
            int nonDataRows = (int)(Dts.Variables["FFNonDataRows"].Value);
            string ffConnection = (string)(Dts.Connections["EmptyFlatFileTest"].AcquireConnection(null) as String);
            FileInfo flatFileInfo = new FileInfo(ffConnection);
            // If file size is 0 bytes, flat file does not contain data.
            long fileSize = flatFileInfo.Length;
            if (fileSize > 0)
            {
                
                
                int lineCount = 0;
                string line;
                StreamReader fsFlatFile = new StreamReader(ffConnection);
                while (!(fsFlatFile.EndOfStream))
                {
                    Console.WriteLine (fsFlatFile.ReadLine());
                    lineCount += 1;
                    // If line count > expected number of non-data rows,
                    //  flat file contains data (default value).
                    if (lineCount > nonDataRows)
                    {
                        break;
                    }
                    // If line count <= expected number of non-data rows,
                    //  flat file does not contain data.
                    if (lineCount <= nonDataRows)
                    {
                        Dts.Variables["FFIsEmpty"].Value = true;
                    }
                }
            }
            else
            {
                Dts.Variables["FFIsEmpty"].Value = true;
            }

            bool fireAgain = false;
            Dts.Events.FireInformation(0, "Script Task", String.Format("{0}: {1}", ffConnection, Dts.Variables["FFIsEmpty"].Value), String.Empty, 0, ref fireAgain);

            Dts.TaskResult = (int)ScriptResults.Success;


        }
Integration Services icon (small) Tümleştirme Hizmetleri ile güncel kalın

Karşıdan yüklemeler, makaleleri, örnekler ve en son Microsoft video yanı sıra, seçili topluluğun çözümleri için ziyaret Integration Services sayfa MSDN veya TechNet:

Bu güncelleştirmelerin otomatik bildirim için kullanılabilir RSS akışlarına abone olmak sayfa.