我有以下格式的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
它将第一个字段作为字符串导入,而不是日期。我很欣赏对文本文件格式的更改(首选)或对脚本的更改以适应作为日期/时间对象的导入。
答案 0 :(得分:1)
尝试从数据文件中删除井号字符('#' - 您可以称之为什么?)。
我想您知道,当通过DoCmd.TransferText
方法导入CSV数据创建表时,Access(Jet)会根据在扫描导入数据的第一行时找到的数据来分配列数据类型。如果列包含数字数据,Jet会为该列分配Number
数据类型,日期格式数据获取DateTime
列等。
在您的情况下,由于“#”字符,Jet无法确定“日期”列的数据类型,因此将该列指定为(相当通用的)Text
数据类型。