CSV导入错误 - 涉及的日期/时间

时间:2013-05-11 05:43:04

标签: csv access-vba ms-access-2010

我有以下格式的CSV文件:

Dates,Open,High,Low,Close,Volume
#2010-01-03 15:01:00#,1.1648,1.1648,1.1622,1.1646,8
#2010-01-03 15:02:00#,1.1648,1.1648,1.1648,1.1648,1
#2010-01-03 15:03:00#,1.1648,1.1648,1.1648,1.1648,2

编辑:要明确,那是YYYY-MM-DD

当我使用以下脚本将其导入Access 2010时(位于D:\Data\Processed中):

Dim strFolderPath As String
strFolderPath = "D:\Data\Processed\"
Dim StrFile As String
StrFile = Dir(strFolderPath & "*.txt")

Do While Len(StrFile) > 0
    'MsgBox (objF1.Name)
    DoCmd.TransferText acImportDelim, , StrFile & "draft", strFolderPath & StrFile, True
    'DoCmd.TransferText acImportDelim, strFolderPath & objF1.Name, False
    'DoCmd.TransferText acImportDelim, "TextImportSpecs", "tblImportedFiles", strFolderPath & objF1.Name, False
    'DoCmd.TransferText _
    'TransferType:=intImportType, _
    'SpecificationName:=strSpecification, _
    'TableName:=strTable, _
    'FileName:=strPath & strFile, _
    'HasFieldNames:=blnHasFieldNames
    'strFile = Dir
    Name strFolderPath & StrFile As "D:\Data\Done\" & StrFile 'Move the files to the archive folder
    StrFile = Dir
Loop

它将第一个字段作为字符串导入,而不是日期。我很欣赏对文本文件格式的更改(首选)或对脚本的更改以适应作为日期/时间对象的导入。

1 个答案:

答案 0 :(得分:1)

尝试从数据文件中删除井号字符('#' - 您可以称之为什么?)。

我想您知道,当通过DoCmd.TransferText方法导入CSV数据创建表时,Access(Jet)会根据在扫描导入数据的第一行时找到的数据来分配列数据类型。如果列包含数字数据,Jet会为该列分配Number数据类型,日期格式数据获取DateTime列等。

在您的情况下,由于“#”字符,Jet无法确定“日期”列的数据类型,因此将该列指定为(相当通用的)Text数据类型。