BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


[IQ] 求助:关于从 ASE 上向 IQ 上导入数据的方法。

首页 » 论坛 » Sybase »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
snow888
精灵使



UID:208930
注册:2004-12-18
最后登录: 2008-10-16
帖子:4265
精华:4

可用积分:2983 (小富即安)
信誉积分:100
专家积分:53 (本版:0)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


1楼 发表于 2008-5-29 17:02 
内容见题:

我的环境:

ASE 数据库

IQ 数据库

两者大部分表的结构相同,有小部分的表数据结构不同,其中 IQ 中表的字段内容包含 ASE 中对应的表的字段内容。

现在我采用的方法是 bcp 备份出来,然后使用 load 方式载入,这个与客户的需求有一定的距离。

要求,数据不落地,直接从 ASE 上导入到 IQ中去。


两台服务器网络连接是通的,两台服务器均可以采用 OCS 方式连接。

我的想法是采用 insert 语句来进行数据导入,但我不知道具体的方法,恳请指点。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

甲午耻,犹未雪。国人恨,何时灭。驾长车,踏破富士山缺。壮志饥餐日虏肉,
笑谈渴饮倭奴血。待从头,收拾旧山河,朝天阙。
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 chuxu   帅哥
版主-精灵使




UID:26327
注册:2002-11-2
最后登录: 2008-10-16
帖子:3152
精华:1

可用积分:6682 (富足长乐)
信誉积分:100
专家积分:176 (本版:35)
空间积分:0
推广积分:1

状态:...在线...

[个人空间] [短信] [博客]


2楼 发表于 2008-5-29 22:23 
对于IQ来说,load是效率最高的方法,特别是数据量大的时候。
IQ也支持直接从外部数据库访问数据。要求访问两个数据库必须有相同的用户和密码,在interfaces中配置外部的ASE库。使用
如下的语法:
        INSERT INTO asiq_table (col1, col2, col3, ...)
        LOCATION 'servername.dbname'
        { SELECT col1, col2, col3,...
        FROM table }



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
snow888
精灵使



UID:208930
注册:2004-12-18
最后登录: 2008-10-16
帖子:4265
精华:4

可用积分:2983 (小富即安)
信誉积分:100
专家积分:53 (本版:0)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


3楼 发表于 2008-5-30 09:01 


QUOTE:
原帖由 chuxu 于 2008-5-29 22:23 发表
对于IQ来说,load是效率最高的方法,特别是数据量大的时候。
IQ也支持直接从外部数据库访问数据。要求访问两个数据库必须有相同的用户和密码,在interfaces中配置外部的ASE库。使用
如下的语法:
        INSERT INT ...

谢谢老大哈。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

甲午耻,犹未雪。国人恨,何时灭。驾长车,踏破富士山缺。壮志饥餐日虏肉,
笑谈渴饮倭奴血。待从头,收拾旧山河,朝天阙。
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
snow888
精灵使



UID:208930
注册:2004-12-18
最后登录: 2008-10-16
帖子:4265
精华:4

可用积分:2983 (小富即安)
信誉积分:100
专家积分:53 (本版:0)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


4楼 发表于 2008-6-27 09:14 


QUOTE:
原帖由 chuxu 于 2008-5-29 22:23 发表
对于IQ来说,load是效率最高的方法,特别是数据量大的时候。
IQ也支持直接从外部数据库访问数据。要求访问两个数据库必须有相同的用户和密码,在interfaces中配置外部的ASE库。使用
如下的语法:
        INSERT INT ...

老大,试了一下哈。感觉有问题啊。

我是如下配置的,您给看看有什么问题没有啊。

在 ASE 上配置 IQ 的服务(在 interfaces文件中)
IQ
            master tcp  ether 192.168.18.100 7000
            query tcp ether 192.168.18.100 7000

然后使用 isql -Umisinfo -Pmisinfo -Jcp936   连接到 ASE 的数据库
1> use misinfo
2>go
1> insert into w1 ( nodecode ) location 'IQ.misinfo' select nodecode from node_code
2>go

结果报出如下错误:
Msg 102, Level 15, State 1:
Server 'WEB', Line 1:
Incorrect syntax near 'location'

PS:
我的ASE、IQ两个数据库都有同样的用户和用户密码。
在 ASE 上使用 isql -Umisinfo -Pmisinfo -SIQ 能连接到 IQ 的misinfo 上去。
我的 ASE 的数据库服务是 WEB

不知道我错在哪里了。盼指点。

[ 本帖最后由 snow888 于 2008-6-27 09:46 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

甲午耻,犹未雪。国人恨,何时灭。驾长车,踏破富士山缺。壮志饥餐日虏肉,
笑谈渴饮倭奴血。待从头,收拾旧山河,朝天阙。
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 chuxu   帅哥
版主-精灵使




UID:26327
注册:2002-11-2
最后登录: 2008-10-16
帖子:3152
精华:1

可用积分:6682 (富足长乐)
信誉积分:100
专家积分:176 (本版:35)
空间积分:0
推广积分:1

状态:...在线...

[个人空间] [短信] [博客]


5楼 发表于 2008-6-27 15:04 
location 这个语法是IQ的。应该登陆到IQ上,使用这个语法从ASE中获取数据



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
snow888
精灵使



UID:208930
注册:2004-12-18
最后登录: 2008-10-16
帖子:4265
精华:4

可用积分:2983 (小富即安)
信誉积分:100
专家积分:53 (本版:0)
空间积分:0
推广积分:0

状态:...保密...

[个人空间] [短信] [博客]


6楼 发表于 2008-6-28 12:55 


QUOTE:
原帖由 chuxu 于 2008-6-27 15:04 发表
location 这个语法是IQ的。应该登陆到IQ上,使用这个语法从ASE中获取数据

这个问题已经解决,可是又出现了新的问题.

我需要按天加载数据,因此需要传入一个参数 work ,我想使用存取过程来完成这样的工作.

我的语句是

create procedure proc_01 ( @work_date char(10) , ret int OUTPUT)
as
        begin
        insert into account_mxb ( node,amt,workdate) location 'ASE.misinfo' { select node,amt,workdate from account_mxb where workdate = @work_date }
        if sqlcode !=0
              set @ret = -1
              return
        @ret = 0
         return
         end

可就是不能执行,说我的 work_date 没有定义 ,我改成如下语句

create procedure proc_01 ( @work_date char(10) , ret int OUTPUT)
as
        begin
        EXECUTE IMMEDIATE WITH RESULT SET OFF 'insert into account_mxb ( node,amt,workdate) location '' || 'ASE.misinfo' || ' ' { select node,amt,workdate from account_mxb where workdate = '' || work_date || ''}'
        if sqlcode !=0
              set @ret = -1
              return
        @ret = 0
         return
         end

还是报错,说什么 RESULT 的错误.

怎么办呀 !

[ 本帖最后由 snow888 于 2008-6-28 12:57 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

甲午耻,犹未雪。国人恨,何时灭。驾长车,踏破富士山缺。壮志饥餐日虏肉,
笑谈渴饮倭奴血。待从头,收拾旧山河,朝天阙。
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?

首页 » 论坛 » Sybase »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.061779 second(s), 4 queries , Gzip enabled