2011-05-19 1404 views
3

我正試圖將大型Access .mdb數據庫導出到SQL Server數據庫,並且已經遇到Microsoft DTS無法識別的問題訪問數據庫中特定類型字段的數據類型。將Access數據庫轉換爲SQL Microsoft DTS - 數據類型'130'不在映射文件中

我看了一下有問題的訪問表,它們被設置爲長度爲1的「文本」。它們包含單個Y或N值(如果已填充,但也可以具有空值)。

我一直在包含這種類型的字段的單個表上進行測試。當我打開「編輯映射」屏幕時,數據類型設置爲-1,因此我手動將其設置爲長度爲1的字符類型並嘗試處理該表。這將產生以下錯誤信息:

[Source Information] 
Source Location : C:\admin\facdata.mdb 
Source Provider : Microsoft.Jet.OLEDB.4.0 
Table: `ACASSCATDEPREC` 
Column: DepBook 
Column Type: 130 
SSIS Type: (Type unknown ...) 
Mapping file (to SSIS type): c:\Program Files\Microsoft SQL Server\100\DTS\MappingFiles\JetToSSIS.xml 

    [Destination Information] 
    Destination Location : SERVERNAME 
    Destination Provider : SQLOLEDB 
    Table: [dbo].[ACASSCATDEPREC] 
    Column: DepBook 
    Column Type: char 
    SSIS Type: string [DT_STR] 
    Mapping file (to SSIS type): c:\Program Files\Microsoft SQL Server\100\DTS\MappingFiles\MSSQLToSSIS10.XML 
    [Conversion Steps] 
    Conversion unknown ... 
    SSIS conversion file: c:\Program Files\Microsoft SQL Server\100\DTS\binn\DtwTypeConversion.xml 

我一直在閱讀各種博客和它好像我需要編輯XML映射文件告訴DTS什麼樣的數據類型130應​​該是讓我編輯的文件C: \ Program Files \ Microsoft SQL Server \ 100 \ DTS \ MappingFiles \ JetToSSIS.xml並再次運行它,但這沒有什麼區別。

我這增加了XML映射文件,然後重新啓動該程序,然後再次嘗試:

<dtm:DataTypeMapping > 
    <dtm:SourceDataType> 
     <dtm:DataTypeName>Char</dtm:DataTypeName> 
    </dtm:SourceDataType> 
    <dtm:DestinationDataType> 
     <dtm:CharacterStringType> 
      <dtm:DataTypeName>130</dtm:DataTypeName> 
      <dtm:Length>1</dtm:Length> 
     </dtm:CharacterStringType> 
    </dtm:DestinationDataType> 
</dtm:DataTypeMapping> 

,我得到了完全相同的錯誤,其實像以前一樣使我相信,編輯等映射文件不會有所作爲。

任何任何想法?

+0

這是一個需要編寫腳本的一次性操作還是什麼?如果是一次性導入,請考慮SQL Server遷移助理for Access,它是迄今爲止從Jet/ACE升級到SQL Server的最通用的工具。 – 2011-05-22 00:25:42

回答

3

您現在可能會遇到更大更好的錯誤消息,但在嘗試使用導入嚮導將.mdb導入SQL 2008 R2時遇到了同樣的問題。在mdb文件中設置爲文本的幾個字段正在拋出「在映射文件中未找到源數據類型130」錯誤。我將其追蹤到mdb文件中的文本字段長度。任何設置爲小於30的文本字段都會拋出錯誤。在mdb文件中,我將所有文本字段的字段大小增加到至少30,然後我能夠導入數據庫。希望這可以幫助!

  • 珍妮特
+0

這正是我的問題所在。感謝您的迴應! – TGuimond 2011-07-16 13:07:20

+0

我也有'源數據類型130沒有在映射文件中發現'錯誤,但所有的列都是字段長度50.我將它們更改爲51並且問題解決 – TFischer 2014-06-04 14:19:29

+0

偉大的工作@Janet Laugel。我改變了任何將錯誤提交給訪問中的長文本的字段,它工作。 – 2015-11-22 22:08:28

2

你需要編輯3個文件:

  • IBMDB2ToSSIS10.xml
  • JetToSSIS.xml
  • DtwTypeConversion.xml

複製任何類型的文字和重新設定了130個來源和目標位置的來源。對我來說很完美。

7

爲了詳細說明這一點,如果你選擇去了XML的路線,你將需要編輯以MSSQL訪問的文件內容如下:

的%ProgramFiles%\ Microsoft SQL Server的[你的版本] \ DTS \ MappingFiles \

添加以下 JetToMSSql8.xml JetToMSSql9。XML

<!-- 130 --> 
<dtm:DataTypeMapping > 
    <dtm:SourceDataType> 
     <dtm:DataTypeName>130</dtm:DataTypeName> 
    </dtm:SourceDataType> 
    <dtm:DestinationDataType> 
     <dtm:CharacterStringType> 
      <dtm:DataTypeName>nvarchar</dtm:DataTypeName> 
      <dtm:UseSourceLength/> 
     </dtm:CharacterStringType> 
    </dtm:DestinationDataType> 
</dtm:DataTypeMapping> 

並以 JetToSSIS.xml

<!-- 130 --> 
<dtm:DataTypeMapping > 
    <dtm:SourceDataType> 
     <dtm:DataTypeName>130</dtm:DataTypeName> 
    </dtm:SourceDataType> 
    <dtm:DestinationDataType> 
     <dtm:CharacterStringType> 
      <dtm:DataTypeName>DT_WSTR</dtm:DataTypeName> 
      <dtm:UseSourceLength/> 
     </dtm:CharacterStringType> 
    </dtm:DestinationDataType> 
</dtm:DataTypeMapping> 

的JetToMSSql * .XML將協助在訪問在MSSQL中爲nvarchar數據類型映射這些 「短文本」 字段。我覺得他們實際上是在內部存儲爲NChar的,但對於大多數目的來說,可變解決方案可能沒問題。 JetToSSIS.xml然後將數據類型映射爲寬字符串,就像您期望的那樣。隨着這些文件的更新,SSIS嚮導會正常處理這些列。

+0

有關此特定問題的更多信息,請訪問:http://support.microsoft.com/kb/2152728(SSIS 2008導入導出嚮導可以顯示數字而不是數據類型)。 – Josien 2012-07-01 13:27:21

1

對我來說,130問題的答案並不是30或更多的字段長度 - 這是事實上,您在Access 2003或更高版本中更改字段長度。 (我把它改爲100,留下一些長度爲50的單獨 - 這些仍然錯誤130 - 所以我將它們全部更改爲100) 我認爲我的問題源自複製Access 97數據庫中的幾個表。 我有數百個領域,其中給了,即使他們可能已經16

0

有這個問題的字段的長度沒有問題,其他表,具有類型10(DAO 3.6文本)和屬性

  1. 屬性應爲
  2. 請參閱使用DAO 3.6的字段的屬性。類型130是指 ADO。

何塞·羅伯託 巴西

相關問題