タブ区切りファイルをテーブルにインポートしようとしています。
問題は、時々、ファイルに 2 つの「null 値」を持つ厄介なレコードが含まれ、プログラムが「予期しないファイルの終わり」をスローすることです。
たとえば、各レコードには 20 個のフィールドがあります。しかし、最後のレコードには 2 つのフィールド (2 つの null 値) しかないため、予期しない EOF が発生します。
現在、私はを使用していStreamReader
ます。
行数を数えて、「ファントム ヌル」の前に読み取りを停止するように bcp に指示しようとしましたが、「ファントム ヌル」がStreamReader
原因で行数が正しくありません。
すべての偽のコード (ネットから借用したコード) を取り除くために、次のコードを試しました。ただし、フィールドを空のスペースに置き換えるだけです(行が残っていない結果が欲しいです)。
Public Sub RemoveBlankRowsFromCVSFile2(ByVal filepath As String)
If filepath = DBNull.Value.ToString() Or filepath.Length = 0 Then Throw New ArgumentNullException("filepath")
If (File.Exists(filepath) = False) Then Throw New FileNotFoundException("Could not find CSV file.", filepath)
Dim tempFile As String = Path.GetTempFileName()
Using reader As New StreamReader(filepath)
Using writer As New StreamWriter(tempFile)
Dim line As String = Nothing
line = reader.ReadLine()
While Not line Is Nothing
If Not line.Equals(" ") Then writer.WriteLine(line)
line = reader.ReadLine()
End While
End Using
End Using
File.Delete(filepath)
File.Move(tempFile, filepath)
End Sub
SSIS を使用してみましたが、予期しない EOF エラーが発生します。
私は何を間違っていますか?