【发布时间】:2011-01-25 21:37:16
【问题描述】:
我一直在尝试使用来自this 问题的以下 SQL 语句将数据从一个 Access 表插入到链接的 SQL Server 表中,为我的目的而修改 - 但我不断收到“溢出”作为错误消息:
INSERT INTO dbo_tblGageActivity(strGageID, strCustJobNum, datDateEntered, datTimeEntered)
SELECT [Gage ID] as GageID, [Customer Job#] as JobNum, [Date] as DateEntered,
[Time Entered] as TimeEntered FROM TblInstTrak;
我已经尝试了很多方法,都导致了“溢出”错误。我一定错过了什么,但对于我的生活,我不知道是什么。 > 100,000 条记录对于一个插入子查询来说是否太多了?
-- 编辑于 2011 年 1 月 25 日 @ 1540 小时--
字段的数据类型和大小如下:
TblInstTrak Type:Size Required dbo_tblGageActivity Type:Size Required
----------------------------------------------------------------------------------------------------
Gage ID Text:50 True strGageID Text:50 True
Customer Job# Text:50 False strCustJobNum Text:50 True
Date Date/Time:8 False datDateEntered Date/Time:8 True
Time Entered Date/Time:8 False datTimeEntered Date/Time:8 True
-- 编辑于 2011 年 1 月 26 日 @ 1355 小时--
好的 - 我已经为此苦苦思索了几天(在我带着它来到 SO 之前,它就在这里的那一天),我能想出的唯一区别是输入日期字段本地应用程序端的格式为“m/d/yyyy”,本地应用程序端的“输入时间”字段格式为“长时间”——SQL Server 表中的这些字段均未设置任何格式。
出于性能原因,我开始怀疑是否有更好的方法现在将所有当前数据提取到表中 - 然后仅将本地应用程序中的更新提取到镜像 SQL Server 副本中。没有数据输入到 SQL Server 端副本中,它仅用于我的测试应用程序的性能 - 唯一更改的数据是在本地应用程序端。这种方法会比每次我想更新它时擦除 SQL Server 数据库表并重新填充它更容易吗?
-- 编辑于 2011 年 1 月 28 日 @ 1236 小时--
在找到罗马帝国时代的一些日期后(感谢 David Fenton 为我指出这一点),我将 import SQL 语句修改为以下内容:
INSERT INTO dbo_tblGageActivity(strGageID, strCustJobNum, datDateEntered, datTimeEntered)
SELECT [Gage ID] as GageID, [Customer Job#] as JobNum, [Date] as DateEntered,
[Time Entered] as TimeEntered FROM TblInstTrak WHERE [Date] >=1/1/1900;
我得到了几个非常棒的答案,我只能选择一个答案(精神痛苦)所以请不要生气 - 这真的帮助我学习。
【问题讨论】:
-
你能插入任何行吗?
-
源列和目标列的数据类型是什么?
-
不,它工作了大约两分钟 - 然后抛出溢出错误 - 目标表中没有任何结果(dbo_tblGageActivity)
-
我不认为 > 100,000 条记录应该是个问题。我能够毫无问题地完成 800 万条记录...
-
如果您将
SELECT更改为仅返回TOP 10或其他小东西...是否执行插入过程?
标签: sql-server ms-access vba