我試圖找到一個解決方案,這幾天沒有任何成功。真的很感謝任何幫助選擇查詢截斷大於10位的數字數據
我想導入一個csv文件到Access數據庫,但數字列的一些數據被截斷。
我沒有在我的機器上安裝MS Access(僅預裝Windows預裝的數據庫引擎(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
看來它設置列的基礎上,初步幾條記錄的最大長度的輸出。我如何防止它做到這一點。
訪問權限選擇是因爲該工具不需要額外的設置來在Windows中運行。
安裝MS Access時不會截斷數據(使用Access 2010進行測試)。這是否意味着ACE.OLEDB.12
可與最新的ACE egine ACECORE.dll
(wiki)
請提出任何的可能性來解決問題,而無需安裝數據庫
嘗試使用[schema.ini](https://msdn.microsoft.com/en-us/library/ms709353(VS.85).aspx)文件來明確定義列類型應該是。它看起來像Text驅動程序假定該列是長整型並截斷超過有符號32位整數(〜2.1E9)的最大值的值。 –
數據文件的列數不固定。所以我現在看到的唯一選項是基於此列以降序對文件進行排序,然後加載。但我想知道是否有可能從vba – xGen