祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 15174|回复: 14

iq load 问题

[复制链接]

iq load 问题

[复制链接]
whw

主题

0

回帖

7

积分

新手上路

积分
7
贡献
在线时间
小时
2007-1-6 14:24:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×

问题已经解决,特别感谢l5066113  jonse的热心帮助!

我用下面的命令导出数据

select * from "DW"."d_tax_kind";
output to 'c:\d_tax_kind.out'
delimited by '|'
format ASCII

然后用下面的命令导入数据,但老是报connot convert to a datetime(column end_date)的错误

LOAD TABLE d_tax_kind
( TAX_KIND_KEY '|',
TAX_KIND_CODE '|',
TAX_KIND_NAME '|',
TAX_ITEM_CODE '|',
TAX_ITEM_NAME '|',
TAX_FLAG      '|',
EFFECTIVE_DATE '\x0d\x0a',
END_DATE     '\x0d\x0a',
)
FROM 'c:\d_tax_kind.out'
ESCAPES OFF
QUOTES Off
format ASCII
WITH CHECKPOINT ON

我知道是日期的问题,已经改到下面方式还是不行

LOAD TABLE d_tax_kind
( TAX_KIND_KEY '|',
TAX_KIND_CODE '|',
TAX_KIND_NAME '|',
TAX_ITEM_CODE '|',
TAX_ITEM_NAME '|',
TAX_FLAG      '|',
EFFECTIVE_DATE  datetime ('yyyy-mm-dd Thh:mm:ss.m'),
END_DATE datetime('yyyy-mm-dd Thh:mm:ss:m')
)
FROM 'c:\d_tax_kind.out'
ESCAPES OFF
QUOTES Off
format ASCII
WITH CHECKPOINT ON 

[此贴子已经被作者于2007-1-10 10:36:20编辑过]
共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
l5066113

主题

0

回帖

16

积分

新手上路

积分
16
贡献
在线时间
小时
2007-1-6 20:24:45 | 显示全部楼层

文本导出应该加上quotes '',否则字符类型的数据会用'引起来的。

select * from "DW"."d_tax_kind";
output to 'c:\d_tax_kind.out'
delimited by '|'
format ASCII
quotes '';

文本导入的load语句也有点问题,行结束符应该只在最后一列指定。改成下面的语句试试看。

LOAD TABLE d_tax_kind
(
 TAX_KIND_KEY '|',
 TAX_KIND_CODE '|',
 TAX_KIND_NAME '|',
 TAX_ITEM_CODE '|',
 TAX_ITEM_NAME '|',
 TAX_FLAG '|',
 EFFECTIVE_DATE '|',
 END_DATE '\x0a'
)
FROM 'c:\d_tax_kind.out'
ESCAPES OFF
QUOTES Off
format ASCII
WITH CHECKPOINT ON

[此贴子已经被作者于2007-1-6 20:29:33编辑过]
共享共进共赢Sharing And Win-win Results
whw 楼主

主题

0

回帖

7

积分

新手上路

积分
7
贡献
在线时间
小时
2007-1-7 22:36:11 | 显示全部楼层

谢谢2楼的答复,但是我按照下面的方法导出的时候报syntax error near "DW",报语法错误。即使去掉也报语法错误

select * from "DW"."d_tax_kind"
output to 'c:\d_tax_kind.txt'
delimited by '|'
format ASCII
quotes '';

共享共进共赢Sharing And Win-win Results
jonse

主题

0

回帖

26

积分

注册会员

积分
26
贡献
在线时间
小时
2007-1-8 10:07:08 | 显示全部楼层

语法错误

语法错误:

应该是: output to 'c:\d_tax_kind.txt'
format ascii
delimited by '|'
quote '';

quote 没有s.

共享共进共赢Sharing And Win-win Results
whw 楼主

主题

0

回帖

7

积分

新手上路

积分
7
贡献
在线时间
小时
2007-1-8 10:48:27 | 显示全部楼层

非常感谢l5066113 and jonse 的热心帮助。

但是还是load 不进去,

报number of bytes (512) for a column from an input file has exceeded the maxinum allowed(4)的错误

导出的command

select * from d_tax_kind;
output to 'c:\d_tax_kind.out'
delimited by '|'
format ASCII
quote '';

导入的command

LOAD TABLE d_tax_kind
( TAX_KIND_KEY '|',
TAX_KIND_CODE '|',
TAX_KIND_NAME '|',
TAX_ITEM_CODE '|',
TAX_ITEM_NAME '|',
TAX_FLAG      '|',
EFFECTIVE_DATE '|',
END_DATE     '\x0a')
FROM 'c:\d_tax_kind.out'
ESCAPES OFF
delimited by '|'
QUOTES Off
format ASCII
WITH CHECKPOINT ON 

共享共进共赢Sharing And Win-win Results
l5066113

主题

0

回帖

16

积分

新手上路

积分
16
贡献
在线时间
小时
2007-1-8 11:29:21 | 显示全部楼层
可以将你的

导入的command

LOAD TABLE d_tax_kind
( TAX_KIND_KEY '|',
TAX_KIND_CODE '|',
TAX_KIND_NAME '|',
TAX_ITEM_CODE '|',
TAX_ITEM_NAME '|',
TAX_FLAG      '|',
EFFECTIVE_DATE '|',
END_DATE     '\x0a')
FROM 'c:\d_tax_kind.out'
ESCAPES OFF
delimited by '|'
QUOTES Off
format ASCII
WITH CHECKPOINT ON

中的'\x0a'换成'

'试试看,就是在''中按回车键。

同时感谢jonse的指正。

共享共进共赢Sharing And Win-win Results
whw 楼主

主题

0

回帖

7

积分

新手上路

积分
7
贡献
在线时间
小时
2007-1-8 12:57:32 | 显示全部楼层

To:l5066113

我刚才用您的方法试了一下,但还是报connot convert to a datetime(column end_date)的错

LOAD TABLE d_tax_kind
( TAX_KIND_KEY '|',
TAX_KIND_CODE '|',
TAX_KIND_NAME '|',
TAX_ITEM_CODE '|',
TAX_ITEM_NAME '|',
TAX_FLAG      '|',
EFFECTIVE_DATE '|',
END_DATE     '

')
FROM 'c:\d_tax_kind.out'
ESCAPES OFF
delimited by '|'
QUOTES Off
format ASCII
WITH CHECKPOINT ON

共享共进共赢Sharing And Win-win Results
l5066113

主题

0

回帖

16

积分

新手上路

积分
16
贡献
在线时间
小时
2007-1-8 13:33:23 | 显示全部楼层

可以先建立一张临时表,插入几条测试数据,测一下SQL.

create table test_load (
 load_date char(8) not null,
 effective_date datetime not null,
 end_date datetime not null
);


insert into test_load
select
 '20070108',
 now(),
 now()
;

select * from test_load;
output to 'c:\test_load.out'
delimited by '|'
format ascii
quote '';

load table test_load
(
 load_date '|',
 effective_date '|',
 end_date '
'
)
from 'c:\test_load.out'
escapes off
delimited by '|'
quotes off
format ascii
with checkpoint on;

如果成功,则说明datetime类型的数据用这种方法没问题。

是你表d_tax_kind中的数据有问题:

1、EFFECTIVE_DATE、END_DATE中有空值或非法数据

2、TAX_KIND_NAME、TAX_ITEM_NAME等长字符型数据中有字符“|”

共享共进共赢Sharing And Win-win Results
whw 楼主

主题

0

回帖

7

积分

新手上路

积分
7
贡献
在线时间
小时
2007-1-9 09:42:30 | 显示全部楼层

非常感谢l5066113的热心帮助

确实是这样的在end_date字段里面有很多都是空值,那请问一下应该如何处理空值问题呢?谢谢!

共享共进共赢Sharing And Win-win Results
jonse

主题

0

回帖

26

积分

注册会员

积分
26
贡献
在线时间
小时
2007-1-9 10:41:20 | 显示全部楼层

0、卸载数据一般采用set option语句完成,

你的错误很可能就入l5066113所说

1、EFFECTIVE_DATE、END_DATE中有空值或非法数据

如果出现此情况,你可以通过NULL子句描述什么是空值

2、TAX_KIND_NAME、TAX_ITEM_NAME等长字符型数据中有字符“|”

此种情况,你需要修改你的卸载脚本,字段分隔符号采用多字节符号,在加载脚本中也需要修改分隔符号。

[此贴子已经被作者于2007-1-9 13:32:03编辑过]
共享共进共赢Sharing And Win-win Results
whw 楼主

主题

0

回帖

7

积分

新手上路

积分
7
贡献
在线时间
小时
2007-1-9 14:05:10 | 显示全部楼层

谢谢您,jonse

我用了您的方法,设置了set temporary option,但end_date这个字段里的空值还是无法处理。请问如何解决?

(虽然数据已经导进去了,但是是用etl工具生成的脚本和数据,导进去的,我现在就想用脚本的方法把数据导出并且导入)

set temporary option TEMP_EXTRACT_COLUMN_DELIMITER='|';
set temporary option TEMP_EXTRACT_BINARY='OFF';
set temporary option TEMP_EXTRACT_SWAP='OFF';
SET TEMPORARY OPTION ALLOW_NULLS_BY_DEFAULT='ON';
SET TEMPORARY OPTION ANSINULL='ON';
select * from "DW"."d_tax_kind";
output to 'c:\d_tax_kind.out'
delimited by '|'
format ASCII
quote '';

[此贴子已经被作者于2007-1-9 14:48:55编辑过]
共享共进共赢Sharing And Win-win Results
l5066113

主题

0

回帖

16

积分

新手上路

积分
16
贡献
在线时间
小时
2007-1-9 21:17:18 | 显示全部楼层

set option与output是IQ的两种不同数据卸载方式。set option的方法数据只能卸载到数据库服务器端,output的方法数据卸载到当前运行端,既可以是服务器端也可以是客户端。

set option的方法是通过temporary option TEMP_EXTRACT_NAME1来指定文件输出的名称及路径,因此你的数据卸载SQL中的set temporary option都是没用的。

1、EFFECTIVE_DATE、END_DATE中有空值或非法数据

如果出现此情况,你可以通过NULL子句描述什么是空值

jonse的意思是说,你可以在load语句中用NULL字句来描述空值,例:

LOAD TABLE d_tax_kind
(

TAX_KIND_KEY '|',
TAX_KIND_CODE '|',
TAX_KIND_NAME '|',
TAX_ITEM_CODE '|',
TAX_ITEM_NAME '|',
TAX_FLAG      '|',
EFFECTIVE_DATE '|' null(''),
END_DATE     '

' null('')

)
FROM 'c:\d_tax_kind.out'
ESCAPES OFF
delimited by '|'
QUOTES Off
format ASCII
WITH CHECKPOINT ON

你可以先看看你生成的文本文件中的空值是什么,然后在null('')中加以描述。

共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-5-4 10:59 , Processed in 0.061021 second(s), 7 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表