Если вы используете .Net OLE DB провайдера , вы можете указать подробности форматирования .csv в файле schema.ini в папке, в которой находятся ваши файлы данных. Для «без кавычек» .csv функции
должен выглядеть как
[noquotes.csv] <-- file name
ColNameHeader=True <-- or False
CharacterSet=1252 <-- your encoding
Format=Delimited(,) <--
TextDelimiter= <-- important: no " in source file
Col1=VendorID Integer <-- your columns, of course
Col2=AccountNumber Char Width 15
для "заключенного в кавычки" .csv, просто измените имя и удалите строку TextDelimiter = (по умолчанию заключаются в кавычки).
Затем подключитесь к текстовой базе данных и выполните инструкцию
SELECT * INTO [quotes.csv] FROM [noquotes.csv]
(поскольку это создает quotes.csv, вы можете захотеть удалить файл перед каждым экспериментальным прогоном)
Добавлено для справки с "Пустые поля должны быть в кавычках"
Это демонстрационная версия VBScript, но поскольку важными являются параметры для .GetString (), вы можете легко перенести ее на VB:
Dim sDir : sDir = resolvePath( "§LibDir§testdata\txt" )
Dim sSrc : sSrc = "noquotes.csv"
Dim sSQL : sSQL = "SELECT * FROM [" & sSrc & "]"
Dim oTxtDb : Set oTxtDb = New cADBC.openDb( Array( "jettxt", sDir ) )
WScript.Echo goFS.OpenTextFile( goFS.BuildPath( sDir, sSrc ) ).ReadAll()
Dim sAll : sAll = oTxtDb.GetSelectFRO( sSQL ).GetString( _
adClipString, , """,""", """" & vbCrlf & """", "" _
)
WScript.Echo """" & Left( sAll, Len( sAll ) - 1 )
и вывод:
VendorID;AccountNumber;SomethingElse
1;ABC 123 QQQ;1,2
2;IJK 654 ZZZ;2,3
3;;3,4
"1","ABC 123 QQQ","1,2"
"2","IJK 654 ZZZ","2,3"
"3","","3,4"
(немецкий язык, следовательно, разделитель полей; и десятичный символ,)
Тот же вывод из этого кода VB.Net:
Imports ADODB
...
Sub useGetString()
Console.WriteLine("useGetString")
Const adClipString As Integer = 2
Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim sAll As String
cn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=M:\lib\kurs0705\testdata\txt\;" _
& "Extended Properties=""text;"""
cn.Open()
rs = cn.Execute("SELECT * FROM [noquotes.csv]")
sAll = rs.GetString( adClipString, , """,""", """" & vbCrLf & """", "" )
cn.Close()
sAll = """" & Left( sAll, Len( sAll ) - 1 )
Console.WriteLine( sAll )
End Sub