将 Excel 导入 SQL Server
Posted
技术标签:
【中文标题】将 Excel 导入 SQL Server【英文标题】:Importing Excel into SQL Server 【发布时间】:2015-05-29 16:28:46 【问题描述】:我想使用 Excel 工作表中的数据更新表格。我的 excel 文件只有两列,一列带有唯一标识符,另一列带有参考。 我尝试使用 OPENROWSET 命令来更新我的表,但数据库有一个安全属性不允许我这样做。
我现在的想法是在我的数据库中用这两列创建一个新表,然后更新我表中的数据。为了在我的数据库中创建数据,我尝试使用 SQL Server 中的导入向导,但是当我尝试这样做时,我收到了以下消息:
错误 0xc020901c:数据流任务 1:源 - Sheet1$.Outputs[Excel 源输出].Columns[PST_WSI_RefDes] 在源 - Sheet1$.Outputs[Excel 源输出] 上有错误。返回的列状态为:“文本被截断或一个或多个字符在目标代码页中不匹配。”。 (SQL Server 导入导出向导)
错误 0xc020902a:数据流任务 1:“源 - Sheet1$.Outputs[Excel 源输出].Columns[PST_WSI_RefDes]”失败,因为发生了截断,并且“源 - Sheet1$.Outputs[Excel] 上的截断行处置Source Output].Columns[PST_WSI_RefDes]" 指定截断失败。指定组件的指定对象发生截断错误。 (SQL Server 导入导出向导)
错误 0xc0047038:数据流任务 1:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。 Source - Sheet1$ 上的 PrimeOutput 方法返回错误代码 0xC020902A。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但是错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。 (SQL Server 导入导出向导)
我知道这些消息引用了我的数据,但我的 excel 文件有 12k 行,我不知道哪一行有问题。
如何排查哪条线路有问题?或者,还有其他方法可以从excel中导入数据吗?
更多信息:
我正在尝试导入的数据示例
C7 (OP1 到 OP12), C10 (OP1 到 OP12), C3 (IP1 到 IP16), C6 (OP1 到 OP12), C10, C11, C12, C45, C49, C50, C14 (OP1 到 OP12), C5 (OP1 到 OP12), C9 (OP1 到 OP12), C15 (OP1 到 OP12), C51, C52, C54, C55
字段的最大大小:1303 个字符。
导入表格格式:我试过两种配置:
1 - 唯一标识符和 nvarchar(2000)
2 - nvarchar(200) 和 nvarchar(2000)
【问题讨论】:
试试这个....66pacific.com/sql_server_import_from_excel.aspx 这是我尝试用来导入数据的方法,我收到了您可以在我的问题中验证的消息。 刚试过。出现相同的错误消息。 在 SQL Server 导入和导出向导中,您可以在高级选项卡中调整源数据类型(如果创建新表,这些将成为输出的数据类型,否则仅用于处理源数据)。数据类型与 MS SQL 中的数据类型截然不同,它是 DT_STR 而不是 VARCHAR(255),输出列宽可以设置为 255。对于 VARCHAR(MAX),它是 DT_TEXT。因此,在“数据源”选项的“高级”选项卡中,将任何有问题的列的数据类型从 DT_STR 更改为 DT_TEXT。 【参考方案1】:尝试使用 Excel2mysql,它为我省去了很多麻烦..
【讨论】:
它可以在任何数据库中使用吗?这是一个 MS SQL 数据库,而不是 MySQL 数据库。【参考方案2】:我相信确实如此,您可以下载并试用,在您想为额外功能付费之前是免费的..
【讨论】:
以上是关于将 Excel 导入 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server2014 任务导入数据导入Excel表操作无法完成