whw 发表于 2007-1-6 14:24:02

iq load 问题

<p><font size="5">问题已经解决,特别感谢<span lang="EN-US" style="FONT-SIZE: 8pt; COLOR: #61b713; FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma;"><font size="4"><strong>l5066113</strong>
                                        <font color="#000000">和<strong>&nbsp;</strong></font><strong>jonse</strong><font color="#000000">的热心帮助!</font></font></span></font></p><p>我用下面的命令导出数据</p><p>select * from "DW"."d_tax_kind";<br/>output to 'c:\d_tax_kind.out'<br/>delimited by '|'<br/>format ASCII</p><p>然后用下面的命令导入数据,但老是报connot convert to a datetime(column end_date)的错误</p><p>LOAD TABLE d_tax_kind<br/>( TAX_KIND_KEY '|',<br/>TAX_KIND_CODE '|',<br/>TAX_KIND_NAME '|',<br/>TAX_ITEM_CODE '|',<br/>TAX_ITEM_NAME '|',<br/>TAX_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '|',<br/>EFFECTIVE_DATE '\x0d\x0a',<br/>END_DATE&nbsp;&nbsp;&nbsp;&nbsp; '\x0d\x0a',<br/>)<br/>FROM 'c:\d_tax_kind.out' <br/>ESCAPES OFF <br/>QUOTES Off <br/>format ASCII<br/>WITH CHECKPOINT ON </p><p></p><p>我知道是日期的问题,已经改到下面方式还是不行</p><p>LOAD TABLE d_tax_kind<br/>( TAX_KIND_KEY '|',<br/>TAX_KIND_CODE '|',<br/>TAX_KIND_NAME '|',<br/>TAX_ITEM_CODE '|',<br/>TAX_ITEM_NAME '|',<br/>TAX_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '|',<br/>EFFECTIVE_DATE&nbsp; datetime ('yyyy-mm-dd Thh:mm:ss.m'),<br/>END_DATE datetime('yyyy-mm-dd Thh:mm:ss:m')<br/>)<br/>FROM 'c:\d_tax_kind.out' <br/>ESCAPES OFF <br/>QUOTES Off <br/>format ASCII<br/>WITH CHECKPOINT ON&nbsp; </p>
[此贴子已经被作者于2007-1-10 10:36:20编辑过]

l5066113 发表于 2007-1-6 20:24:45

<p>文本导出应该加上quotes '',否则字符类型的数据会用'引起来的。</p><p>select * from "DW"."d_tax_kind";<br/>output to 'c:\d_tax_kind.out'<br/>delimited by '|'<br/>format ASCII<br/>quotes '';</p><p></p><p>文本导入的load语句也有点问题,行结束符应该只在最后一列指定。改成下面的语句试试看。</p><p>LOAD TABLE d_tax_kind<br/>(<br/>&nbsp;TAX_KIND_KEY '|',<br/>&nbsp;TAX_KIND_CODE '|',<br/>&nbsp;TAX_KIND_NAME '|',<br/>&nbsp;TAX_ITEM_CODE '|',<br/>&nbsp;TAX_ITEM_NAME '|',<br/>&nbsp;TAX_FLAG '|',<br/>&nbsp;EFFECTIVE_DATE '|',<br/>&nbsp;END_DATE '\x0a'<br/>)<br/>FROM 'c:\d_tax_kind.out' <br/>ESCAPES OFF <br/>QUOTES Off <br/>format ASCII<br/>WITH CHECKPOINT ON</p>
[此贴子已经被作者于2007-1-6 20:29:33编辑过]

whw 发表于 2007-1-7 22:36:11

<p>谢谢2楼的答复,但是我按照下面的方法导出的时候报syntax error near "DW",报语法错误。即使去掉也报语法错误</p><p>select * from "DW"."d_tax_kind"<br/>output to 'c:\d_tax_kind.txt'<br/>delimited by '|'<br/>format ASCII<br/>quotes '';</p>

jonse 发表于 2007-1-8 10:07:08

语法错误

<p>语法错误:</p><p>应该是: output to 'c:\d_tax_kind.txt'<br/>format ascii<br/>delimited by '|'<br/>quote '';</p><p></p><p>quote 没有s.</p><p></p>

whw 发表于 2007-1-8 10:48:27

<p>非常感谢<strong><font face="Verdana" color="#61b713">l5066113 and jonse </font></strong>的热心帮助。</p><p>但是还是load 不进去,:( </p><p>报number of bytes (512) for a column from an input file has exceeded the maxinum allowed(4)的错误</p><p>导出的command</p><p>select * from d_tax_kind;<br/>output to 'c:\d_tax_kind.out'<br/>delimited by '|'<br/>format ASCII<br/>quote '';</p><p>导入的command</p><p>LOAD TABLE d_tax_kind<br/>( TAX_KIND_KEY '|',<br/>TAX_KIND_CODE '|',<br/>TAX_KIND_NAME '|',<br/>TAX_ITEM_CODE '|',<br/>TAX_ITEM_NAME '|',<br/>TAX_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '|',<br/>EFFECTIVE_DATE '|',<br/>END_DATE&nbsp;&nbsp;&nbsp;&nbsp; '\x0a')<br/>FROM 'c:\d_tax_kind.out' <br/>ESCAPES OFF<br/>delimited by '|' <br/>QUOTES Off <br/>format ASCII<br/>WITH CHECKPOINT ON&nbsp; </p>

l5066113 发表于 2007-1-8 11:29:21

可以将你的<p>导入的command</p><p>LOAD TABLE d_tax_kind<br/>( TAX_KIND_KEY '|',<br/>TAX_KIND_CODE '|',<br/>TAX_KIND_NAME '|',<br/>TAX_ITEM_CODE '|',<br/>TAX_ITEM_NAME '|',<br/>TAX_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '|',<br/>EFFECTIVE_DATE '|',<br/>END_DATE&nbsp;&nbsp;&nbsp;&nbsp; '\x0a')<br/>FROM 'c:\d_tax_kind.out' <br/>ESCAPES OFF<br/>delimited by '|' <br/>QUOTES Off <br/>format ASCII<br/>WITH CHECKPOINT ON</p><p>中的'\x0a'换成'</p><p>'试试看,就是在''中按回车键。</p><p></p><p>同时感谢<font face="Verdana" color="#61b713"><strong>jonse</strong><font color="#000000">的指正。</font></font></p>

whw 发表于 2007-1-8 12:57:32

<p>To:<strong><font face="Verdana" color="#61b713">l5066113</font></strong></p><p>我刚才用您的方法试了一下,但还是报connot convert to a datetime(column end_date)的错</p><p>LOAD TABLE d_tax_kind<br/>( TAX_KIND_KEY '|',<br/>TAX_KIND_CODE '|',<br/>TAX_KIND_NAME '|',<br/>TAX_ITEM_CODE '|',<br/>TAX_ITEM_NAME '|',<br/>TAX_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '|',<br/>EFFECTIVE_DATE '|',<br/>END_DATE&nbsp;&nbsp;&nbsp;&nbsp; '</p><p>')<br/>FROM 'c:\d_tax_kind.out' <br/>ESCAPES OFF<br/>delimited by '|' <br/>QUOTES Off <br/>format ASCII<br/>WITH CHECKPOINT ON</p><p></p>

l5066113 发表于 2007-1-8 13:33:23

<p>可以先建立一张临时表,插入几条测试数据,测一下SQL.</p><p>create table test_load (<br/>&nbsp;load_date char(8) not null,<br/>&nbsp;effective_date datetime not null,<br/>&nbsp;end_date datetime not null<br/>);</p><p><br/>insert into test_load<br/>select<br/>&nbsp;'20070108',<br/>&nbsp;now(),<br/>&nbsp;now()<br/>;</p><p>select * from test_load;<br/>output to 'c:\test_load.out'<br/>delimited by '|'<br/>format ascii<br/>quote '';</p><p>load table test_load<br/>(<br/>&nbsp;load_date '|',<br/>&nbsp;effective_date '|',<br/>&nbsp;end_date '<br/>'<br/>)<br/>from 'c:\test_load.out' <br/>escapes off<br/>delimited by '|' <br/>quotes off <br/>format ascii<br/>with checkpoint on;</p><p>如果成功,则说明datetime类型的数据用这种方法没问题。</p><p>是你表d_tax_kind中的数据有问题:</p><p>1、EFFECTIVE_DATE、END_DATE中有空值或非法数据</p><p>2、TAX_KIND_NAME、TAX_ITEM_NAME等长字符型数据中有字符“|”</p>

whw 发表于 2007-1-9 09:42:30

<font face="Verdana"><p>非常感谢<font face="Verdana" color="#61b713"><strong>l5066113</strong><font color="#000000">的热心帮助</font></font></p><p><font face="Verdana">确实是这样的在end_date字段里面有很多都是空值,那请问一下应该如何处理空值问题呢<strong>?谢谢!</strong></font></p></font>

jonse 发表于 2007-1-9 10:41:20

<p><font color="#f73809">0、卸载数据一般采用set option语句完成,</font></p><p><font color="#f76809">你的错误很可能就入l5066113所说</font></p><p>1、EFFECTIVE_DATE、END_DATE中有空值或非法数据</p><p><font color="#ff3300">如果出现此情况,你可以通过NULL子句描述什么是空值</font></p><p></p><p>2、TAX_KIND_NAME、TAX_ITEM_NAME等长字符型数据中有字符“|”</p><p><font color="#f73809">此种情况,你需要修改你的卸载脚本,字段分隔符号采用多字节符号,在加载脚本中也需要修改分隔符号。<br/></font></p>
[此贴子已经被作者于2007-1-9 13:32:03编辑过]

whw 发表于 2007-1-9 14:05:10

<p>谢谢您,jonse</p><p>我用了您的方法,设置了set temporary option,但end_date这个字段里的空值还是无法处理。请问如何解决?</p><p>(虽然数据已经导进去了,但是是用etl工具生成的脚本和数据,导进去的,我现在就想用脚本的方法把数据导出并且导入)</p><p>set temporary option TEMP_EXTRACT_COLUMN_DELIMITER='|';<br/>set temporary option TEMP_EXTRACT_BINARY='OFF';<br/>set temporary option TEMP_EXTRACT_SWAP='OFF';<br/>SET TEMPORARY OPTION ALLOW_NULLS_BY_DEFAULT='ON';<br/>SET TEMPORARY OPTION ANSINULL='ON';<br/>select * from "DW"."d_tax_kind";<br/>output to 'c:\d_tax_kind.out'<br/>delimited by '|'<br/>format ASCII<br/>quote '';<br/></p>
[此贴子已经被作者于2007-1-9 14:48:55编辑过]

l5066113 发表于 2007-1-9 21:17:18

<p>set option与output是IQ的两种不同数据卸载方式。set option的方法数据只能卸载到数据库服务器端,output的方法数据卸载到当前运行端,既可以是服务器端也可以是客户端。</p><p>set option的方法是通过temporary option TEMP_EXTRACT_NAME1来指定文件输出的名称及路径,因此你的数据卸载SQL中的set temporary option都是没用的。</p><p>1、EFFECTIVE_DATE、END_DATE中有空值或非法数据</p><p><font color="#ff3300">如果出现此情况,你可以通过NULL子句描述什么是空值</font></p><p><strong><font face="Verdana" color="#61b713">jonse</font></strong>的意思是说,你可以在load语句中用NULL字句来描述空值,例:</p><p>LOAD TABLE d_tax_kind<br/>(</p><p>TAX_KIND_KEY '|',<br/>TAX_KIND_CODE '|',<br/>TAX_KIND_NAME '|',<br/>TAX_ITEM_CODE '|',<br/>TAX_ITEM_NAME '|',<br/>TAX_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '|',<br/>EFFECTIVE_DATE '|' null(''),<br/>END_DATE&nbsp;&nbsp;&nbsp;&nbsp; '</p><p>' null('')</p><p>)<br/>FROM 'c:\d_tax_kind.out' <br/>ESCAPES OFF<br/>delimited by '|' <br/>QUOTES Off <br/>format ASCII<br/>WITH CHECKPOINT ON</p><p>你可以先看看你生成的文本文件中的空值是什么,然后在null('')中加以描述。</p>
页: [1] 2
查看完整版本: iq load 问题

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

Mail To:Admin@SybaseBbs.com