2013-03-20 143 views
2

我有一個.csv文件,我從我們的會計軟件中導出。最終目標是通過附加記錄將「部分」數據導入到Access 2010數據庫表中。我的問題是,我需要某種設備來從.csv文件中僅選擇選擇字段並對這些字段進行格式設置(定義數據類型),以便我能夠將「新」格式的.csv導入到Access中,附加到現有表,沒有任何錯誤。使用宏格式化csv文件

我們的會計軟件確實允許從他們的數據文件具體領域要出口,但它是一個繁瑣的過程,並可能存在許多機會,由客戶服務部的錯誤。我需要儘可能使這個「防白癡」!

+1

您可以先將它轉移到excel中,刪除不需要的列,然後將excel電子表格導出回csv? – 2013-03-20 20:31:44

+0

你有試過什麼嗎?如果是這樣,請提供您的代碼。如果沒有,請嘗試解決這個問題,我們可以進一步幫助你解決你遇到的問題。如果沒有某種樣本數據來定義你所指的「選擇領域」,也很難提供幫助。 – Sam 2013-03-20 20:34:01

+0

我在Excel中嘗試了從文本導入功能。我想要做的是自動化我能夠手動實現的,可能是通過使用某種宏。 – prayingmantes 2013-03-20 20:42:38

回答

1

使用查詢將CSV數據直接導入到Access表中。

的查詢將可以很容易地選擇可用CSV字段的子集。並且查詢可以包含用於轉換CSV值以與Access目標字段數據類型兼容的函數。

INSERT INTO tblFromCSV (FK_ID, CD, [TIMESTAMP], ts_as_datetime) 
SELECT 
    CLng(csv.FK_ID), 
    UCase(csv.CD), 
    csv.TIMESTAMP, 
    CDate(csv.ts_as_datetime) 
FROM [Text;HDR=yes;Database=C:\share\Access\].[sample.csv] AS csv; 

在SQL,INSERT INTO tblFromCSV (<here>)的第一行中列出的字段名稱,是將存儲的數據導入Access表字段的名稱。如果您爲所有表格字段提供值,並以與表格字段相同的順序提供這些值,則可以省略該字段列表。我通常會列出字段。

FROM條款,即我的CSV源文件的第一行包含字段名稱HDR=yes信號。如果您的CSV文件沒有,請使用HDR=no,Access會將假名稱(例如fld1,fld2等)分配給CSV字段。

需要注意的是,如果不CSV包括字段名,他們需要不匹配的訪問字段的名稱。

如果你建立的查詢設計一個類似的查詢,謹防它可能改變FROM條款是這樣的...

FROM (Text;HDR=yes;Database=C:\share\Access\) sample.csv AS csv; 

所以,如果出現這種情況,將其更改回,以避免語法錯誤。

我建議你開始只是一個SELECT查詢來獲取FROM條款的工作。然後根據需要添加您需要轉換CSV值的功能。一旦SELECT查詢返回所需內容,請將其轉換爲INSERT查詢。

我的希望是,如果類似的查詢可以爲您的情況下工作,你不需要Excel作爲中介來獲取CSV數據導入Access。

+0

這看起來很有希望。你能解釋FK_ID,CD等嗎?這些是必要的,還是隻是將數據追加到Access表的字段名? – prayingmantes 2013-03-21 01:02:43

+0

我認爲你做到了。我明天就會放棄工作並報告。感謝Hans – prayingmantes 2013-03-21 01:11:52

+0

我想我應該澄清。 From語句到底是什麼?顯然它指向.csv文件,但HDR代表什麼?該文件必須在共享文件夾中嗎?如果它與Access數據文件在同一個目錄中,我假設它會起作用? – prayingmantes 2013-03-21 01:25:23