将数据从SQL查询传输到i系列(AS400)

时间:2014-06-19 21:34:36

标签: sql odbc ibm-midrange jobs transfer

将SQL中的数据查询到i Series平台(AS400)上的表中。我正在查询3行,需要在AS400 i Series平台上的表中填充这些行。 AS400中的表已经创建,并具有接受SQL数据的必要列。 AS400表列= PPRP#1,PPDATE,PPCOUNT

SQL命令

select b.new_SalesrepId as PPRP#1, max(CONVERT(varchar(8), a.ScheduledStart, 112)) as PPDATE, count(b.new_SalesrepId) as PPCOUNT from ActivityPointerBase as a
join SystemUserExtensionBase as b on b.SystemUserId = a.OwnerId
where a.ActivityTypeCode = '4201' and b.new_SalesrepId is not NULL and a.StateCode = '1' and a.ScheduledStart <= GetDate()
group by b.new_SalesrepId, CONVERT(varchar(8), a.ScheduledStart, 112)
order by b.new_SalesrepId ASC

这将是一个夜间工作,所以在晚上11点,SQL将查询上面的记录,然后将它们写入AS400表到正确的列。

我不熟悉的唯一部分是如何告诉SQL将记录写入AS400表?

更新1:我能够成功地在SQL中创建一个链接服务器到我的i系列盒子。必须启用某些设置才能使连接正常工作。如果有人想知道就问。

更新2:好的我已成功运行此select * from AS400.S062f7ar.APLUS83MDS.PEPAPPTS'但是当我尝试进行更新时:

Update [AS400].S062f7ar.APLUS83MDS.PEPAPPTS
set PPCOUNT = '7'
where PPREP1 = 'FIR00107' 

我收到一条消息说:链接服务器“AS400”的OLE DB提供程序“IBMDASQL”返回消息“SQL7008:APLUS83MDS中的PEPAPPTS对操作无效。 原因。 。 。 。 。 :原因代码是3.原因代码是:1 - PEPAPPTS没有成员。 2 - PEPAPPTS已保存,无存储空间。 3 - 没有记录PEPAPPTS,没有对期刊的权限,或者期刊州是* STANDBY。必须将具有CASCADE,SET NULL或SET DEFAULT的RI约束操作的文件记录到同一日记帐中。恢复。 。 。 :3 - 在PEPAPPTS(STRJRNPF)上开始日记,访问期刊或更改日记...

这是我必须在i系列文件上写的东西才能写入这个表吗?

2 个答案:

答案 0 :(得分:2)

表PEPAPPTS未记录在DB2 for i上。将DB2 sysadmin日志放在表中。

如果出于某种原因这是不可接受的,请关闭驱动程序中的承诺控制。使用IsolationLevel * NONE(或者可能是Chaos)。

有关文档,请参阅:开始&gt;节目&gt; IBM i Access&gt;程序员工具包&gt; OLE DB提供程序技术参考。

答案 1 :(得分:0)

可能缺少您查询的数据库(目录)或库(架构)。通常我会这样使用

insert into sqlTable
   select * from linked_server_name.database.library.table;