gpt4 book ai didi

xml - 将 Access 数据库转换为 SQL Microsoft DTS - 数据类型 '130' 不在映射文件中

转载 作者:数据小太阳 更新时间:2023-10-29 01:59:55 25 4
gpt4 key购买 nike

我正在尝试将大型 Access .mdb 数据库导出到 SQL Server 数据库,但遇到了 Microsoft DTS 无法识别 access 数据库中特定类型字段的数据类型的问题。

我查看了有问题的 Access 表,它们被设置为长度为 1 的“文本”。如果填充,它们包含单个 Y 或 N 值,但也可以有空值。

我一直在对包含此类字段的单个表进行测试。当我打开“编辑映射”屏幕时,数据类型设置为 -1,因此我手动将其设置为长度为 1 的 char 类型并尝试处理该表。这会产生以下错误消息:

[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>

事实上我遇到了与之前完全相同的错误,这让我相信编辑其他映射文件不会有什么不同。

有人有什么想法吗?

最佳答案

详细说明一下,如果您选择走 xml 路线,则 Access MSSQL 需要编辑的文件如下:

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

将以下内容添加到 JetToMSSql8.xmlJetToMSSql9.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 将协助将 Access 中的这些“短文本”字段映射到 MSSQL 中的 nvarchar 数据类型。我的印象是它们实际上在内部以 NChar 的形式存储在 Access 中,但对于大多数用途而言,变量解决方案可能没问题。 JetToSSIS.xml 然后将数据类型映射到宽字符串,正如您所期望的那样。更新这些文件后,SSIS 向导将正常处理这些列。

关于xml - 将 Access 数据库转换为 SQL Microsoft DTS - 数据类型 '130' 不在映射文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6062100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com