我有以下格式的许多.csv文件,其中列出了示例数据:
ID,Lat,Long
1,-43.76120167,158.0299917
2,-43.76119833,158.03
3,-43.7612,158.0299983
4,-43.76120167,158.0299967
值从一个文件更改为文件,但它们始终具有相同的格式和相似的数量。您在上面看到的正是它在.csv文件中的显示方式(使用texpad /记事本而不是在Excel中打开时 - 所以我们现在可以消除任何Excel问题)。
但是,当我将以下INSERT语句作为Access SQL查询运行时:
INSERT INTO Table1 SELECT * FROM [Text;Database=C:\;Hdr=Yes].[ImportFile.csv];
这是我的Access数据库表中显示的内容:
ID,Lat,Long
1,-43,158
2,-43,158
3,-43,158
4,-43,158
现在,我知道你在想什么。我只想说我在Access中的表设计是这样设置的,ID是一个数字/长整数,我的Lat和Long字段都设置为Number / Double with 4 Decimal Places。我已经对此进行了两次检查,并且可以确认,因为并非所有输入文件都有这个问题。
这令我感到困扰......小数点后的所有数字都在哪里?我需要他们。
让我更加困惑的是,有些文件读得很好,小数点就在那里就好......同样的表,相同的插入查询。每个文件都是从同一个源生成的,并根据它的值进行格式化。
但是,如果我启动Access本身并从文本文件向导运行导入,则值最终会很好。 Access自动使字段成为自动小数的两倍(我也尝试在我想要的表中使用自动小数,但没有用。)
任何人都知道发生了什么事?
谢谢!
答案 0 :(得分:1)
这是众所周知的问题。
Jet数据库引擎确定数据源中的数据类型。解决方案之一是使用/ create Schema.ini文件。 另外,请记住,为了确定列的数据类型,只扫描前几行。
有关详细信息,请参阅here