大型DB Query / Streamwriter导致0长度文件 - 出了什么问题?

时间:2014-02-24 16:19:07

标签: sql vb.net file-io

我有以下过程在数据库中查询极大数据集并将其写入文本文件(生成的.txt文件大小应大致为2-3gb)。 / p>

Sub DBExecuteQueryWriteToFile(ByVal strSQLQuery As String, ByVal FileName As String, Optional ByVal Delimiter As String = ",")

    Dim cmd = New OracleCommand(strSQLQuery, conn)
    Dim buffersize As Integer = 1024 * 1024

    Dim x As Integer = 0
    Dim CountRow As Integer = 0

    If File.Exists(FileName) Then
        File.Delete(FileName)
    End If

    Using FileObject As New FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None, buffersize)
        Using StreamWriterObj As New StreamWriter(FileObject)
            Using Reader As OracleDataReader = cmd.ExecuteReader()
                Dim FieldCount As Integer = Reader.FieldCount - 1

                ' Write the headers
                StreamWriterObj.Write(Reader.GetName(0))
                For i = 1 To FieldCount
                    StreamWriterObj.Write(Delimiter)
                    StreamWriterObj.Write(Reader.GetName(i))
                Next
                StreamWriterObj.WriteLine()


                ' Write the file
                Do While Reader.Read()
                    StreamWriterObj.Write(Reader.Item(0))
                    For i = 1 To FieldCount
                        StreamWriterObj.Write(Delimiter)
                        StreamWriterObj.Write(Reader.Item(i))
                    Next
                    StreamWriterObj.WriteLine()
                Loop

            End Using
        End Using
    End Using

End Sub

现在我的问题是,当我尝试在较小的数据集上使用它时,它会完美地写入文本文件,当我尝试使用它来编写大型数据集时,需要很长时间(正如我所料)然后它最终得到一个0kb的文件。

我原本以为问题与查询这么大的数据集有关,所以,我发布了this question,但后来被告知这不是问题。所以我不知道这是对Windows文件大小的限制(我使用的是Windows 7,64位RAM的64位),或者我的代码在其他地方是不好的。

我知道我可以通过打破查询以获取更小的数据集并将每个数据集写入单独的文件来完成我的最终结果,但我还想知道我的代码是否在某处不正确/可以使其更好地工作

任何想法/见解都将不胜感激。 此外,即使这是VB代码,我也同样熟悉VB / C#作为解决方案。

感谢!!!

0 个答案:

没有答案