我试图找到解决这个问题几天但没有任何成功。非常感谢任何帮助
我正在尝试将 csv 文件导入 Access 数据库,但数字列中的一些数据被截断。
我的机器上没有安装 MS Access(只有 Windows 预装了 jet 数据库引擎 ( msjet40.dll and msjetoledb40.dll
))。但除了这个问题,其他一切都很好。我Provider=Microsoft.ACE.OLEDB.12.0
在连接字符串中使用。
csv 文件在文件中包含数字列和非数字列。只要有问题的数字列的值小于周围的值,2140649050
它就可以选择。
SELECT * into ds1 FROM [Text;FMT=Delimited;HDR=YES;DATABASE=" & LFPath & "].[" & LFName & "]
最初我假设在将数据加载到表时会发生数据截断。但是数据在选择本身时被截断。以下选择查询返回为 UPC 列截断的部分数据
SELECT HeadName,[upc code],len([upc code]) as maxlen FROM [Text;FMT=Delimited;HDR=YES;DATABASE=" & LFPath & "].[" & LFName & "]
这是相同的输出
HeadName upc code maxlen
TOTAL U.S 2140649030 10
TOTAL U.S 2140649050 10
TOTAL U.S 2140649050 10
TOTAL U.S
TOTAL U.S
TOTAL U.S
TOTAL U.S
TOTAL U.S
似乎它根据最初的几条记录设置了列的最大长度。我怎样才能阻止它这样做。
之所以选择 Access,是因为该工具无需额外设置即可在 Windows 中运行。
安装 MS Access 时数据不会被截断(使用 Access 2010 测试)。这是否意味着ACE.OLEDB.12
与最新的 ACE egine ACECORE.dll
( wiki )配合得更好
请提出解决问题的任何可能性,而无需安装其他版本的数据库的额外负担