나는 csv 파일을 읽고 그에 따라 매개 변수를 작성하는 함수를 작성 했으므로 먼저 데이터 유형을 얻고 열을 조정하기 위해 SQL 테이블을 쿼리하는 gettypessql 함수가 있습니다. 나중에 sql에 삽입됩니다. 그래서 제 문제는 내가 Jet OLE DB에서 HDR을 Yes로 설정했을 때 F1, F2, F3과 같은 열 이름 만 얻는 것입니다. 이 문제를 피하기 위해 HDR = No로 설정하고 루프 용으로 작성했지만 이제는 빈 문자열 만 얻습니다. 실제로 문제는 무엇입니까? 당신이 그것을 더 복잡가 필요 이상 만들었 생각열 이름을 얻으십시오 vb.net의 Jet OLE DB
Private Function GetCSVFile(ByVal file As String, ByVal min As Integer, ByVal max As Integer) As DataTable
Dim ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TextBox1.Text & ";Extended Properties=""TEXT;HDR=NO;IMEX=1;FMT=Delimited;CharacterSet=65001"""
Dim conn As New OleDb.OleDbConnection(ConStr)
Dim dt As New DataTable
Dim da As OleDb.OleDbDataAdapter = Nothing
getData = Nothing
Try
Dim CMD As String = "Select * from " & _table & ".csv"
da = New OleDb.OleDbDataAdapter(CMD, conn)
da.Fill(min, max, dt)
getData = New DataTable(_table)
Dim firstRow As DataRow = dt.Rows(0)
For i As Integer = 0 To dt.Columns.Count - 1
Dim columnName As String = firstRow(i).ToString()
Dim newColumn As New DataColumn(columnName, mListOfTypes(i))
getData.Columns.Add(newColumn)
Next
For i As Integer = 1 To dt.Rows.Count - 1
Dim row As DataRow = dt.Rows(i)
Dim newRow As DataRow = getData.NewRow()
For j As Integer = 0 To getData.Columns.Count - 1
If row(j).GetType Is GetType(String) Then
Dim colValue As String = row(j).ToString()
colValue = ChangeEncoding(colValue)
colValue = ParseString(colValue)
colValue = ReplaceChars(colValue)
newRow(j) = colValue
Else
newRow(j) = row(j)
End If
Next
getData.Rows.Add(newRow)
Application.DoEvents()
Next
Catch ex As OleDbException
MessageBox.Show(ex.Message)
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
dt.Dispose()
da.Dispose()
End Try
Return getData
End Function
및 유형의 SQL을 얻기가 제대로 변환하지 않습니다이 하나, 특히
Private Sub GetTypesSQL()
If (mListOfTypes Is Nothing) Then
mListOfTypes = New List(Of Type)()
End If
mListOfTypes.Clear()
Dim dtTabelShema As DataTable = db.GetDataTable("SELECT TOP 0 * FROM " & _table)
Using dtTabelShema
For Each col As DataColumn In dtTabelShema.Columns
mListOfTypes.Add(col.DataType)
Next
End Using
End Sub
연결 문자열의'HDR = Yes '부분은 첫 번째 행에 열 이름이 있는지 여부입니다 (사용자가 * 해당 이름을 사용할지 여부는 아닙니다). 헤더가 없을 때 YES를 사용하면 행을 건너 뜁니다. 사용할 열 이름을 재정의하고 지정하는 여러 가지 방법과 구문 분석 및 변환하지 않고 형식을 지정하는 더 쉬운 방법이 있습니다. 나는 그 질문이 무엇인지 확신 할 수 없다. – Plutonix
또한 특정 파일 테이블 쌍에서 작동하도록 코드가 작성 되었습니까? 아니면 일반적인 CSV 대 테이블 프로세서를 작성하려고합니까? – Plutonix
음, 실제로 모든 CSV 파일을 처리해야하지만 파일에 몇 가지 실수가 있음을 알았습니다. 하지만 어쨌든 프로그램을 실행하면 실제로 모든 열을 특정 유형으로 올바르게 변환하지 않습니다. 예를 들어 알 수없는 이유로 double을 데이터로 변환합니다. – Sparkm4n