Как я могу заставить ADO распознавать все даты в CSV-файле как даты в США? - PullRequest
4 голосов
/ 13 мая 2019

У меня есть MS Access DB с именем *your path*\Test\Test.accdb Она содержит таблицу с именем Table1

У меня есть два .csv файла:

  • «ваш путь»\ Test \ Test_Data_20190111.csv »

  • « ваш путь \ Test \ Test_Data_20190114.csv »

с данными даты, сохраненными в формате США какследует:

Date(MM/DD/YYYY),TestField  
1/11/2019,C  
1/11/2019,D  

и

Date(MM/DD/YYYY),TestField
1/14/2019,A
1/14/2019,B

Я загружаю данные из файлов .csv, используя приведенный ниже код VBA (используя ADODB.Recordset),

Sub Upload_CSV_to_MSDB()

Dim xlcon As ADODB.Connection
Dim xlrs As ADODB.Recordset
Dim strSQL As String
Dim strFile_Path_Name As String
Dim cnStr As String

' Set ADO object variable
Set xlcon = New ADODB.Connection
Set xlrs = New ADODB.Recordset

' Set string variables
strFile_Path_Name = "your path \Test\"
strSQL = "INSERT INTO Table1 IN ' your path \Test\Test.accdb' " & _
            "SELECT  [Date(MM/DD/YYYY)], [TestField] " & _
            "FROM Test_Data_20190111.csv"

' Set connection string to CSV file
cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & strFile_Path_Name & ";" & _
            "Extended Properties=""text;HDR=Yes;FMT=Delimited;"""

' Execute strSQl by opening record set
xlrs.Open strSQL, cnStr, adOpenStatic, adLockOptimistic

Set xlrs = Nothing
Set xlcon = Nothing

End Sub

Когда я загружаю данные для файла Test_Data_20190111.csv, ADO распознает дату, сохраненную в формате Великобритании, но для Test_Data_20190114.csv даты распознаются как формат США, так как месяца нет 14.

Как можноЯ запускаю что-то похожее на код выше и распознает ли оно какие-либо даты в файле .csv в формате США?Обратите внимание, что данные имеют даты в американском формате, но мои региональные настройки компьютера имеют британский формат даты;Я не хочу менять эти региональные настройки.

Спасибо.

1 Ответ

1 голос
/ 13 мая 2019

Это так долго, как я сделал это, я забыл точные детали.Однако я считаю, что вам нужно использовать файл Schema.ini.

В каталоге, где находятся файлы CSV, добавьте файл Schema.ini с разделом для каждого файла.Настройки раздела позволяют вам указать формат каждого столбца примерно так:

[Test_Data_20190111.csv]
Format=CSVDelimited
ColNameHeader=True
DateTimeFormat=MM/DD/YYYY
Col1=Date(MM/DD/YYYY) DateTime
Col2=TestField Text

[Test_Data_20190114.csv]
Format=CSVDelimited
ColNameHeader=True
DateTimeFormat=MM/DD/YYYY
Col1=Date(MM/DD/YYYY) DateTime
Col2=TestField Text

Подробнее см. Документацию Microsoft по файлам Scehma.ini .

...