记录集超过8K,SQL server 只能用Text类型了,
绝对没有别的办法

解决方案 »

  1.   

    谢谢千山,可是有一点不一样的。其实,记录集实际是不超过8K的,我觉得是不是MEMO类型引起的,因为如果我将三个MEMO字段改用空格插入的话,是没有问题的。我的做法:
    insert into table1
    select convert(varchar(1024),field1),convert(varchar(4096),field2),convert(varchar(1024),field3) from table2
    其中,field1、field2、field3为MEMO字段;这样的话,会提示以上所述错误。如果改成这样就不会出错了:
    insert into table1
    select convert(varchar(1024),space(1024)),convert(varchar(4096),space(4096)),convert(varchar(1024),space(1024)) from table2而且,我发现好象和varchar后面的数字并没有多大关系。
      

  2.   

    谢谢千山,可是有一点不一样的。其实,记录集实际是不超过8K的,我觉得是不是MEMO类型引起的,因为如果我将三个MEMO字段改用空格插入的话,是没有问题的。我的做法:
    insert into table1
    select convert(varchar(1024),field1),convert(varchar(4096),field2),convert(varchar(1024),field3) from table2
    其中,field1、field2、field3为MEMO字段;这样的话,会提示以上所述错误。如果改成这样就不会出错了:
    insert into table1
    select convert(varchar(1024),space(1024)),convert(varchar(4096),space(4096)),convert(varchar(1024),space(1024)) from table2而且,我发现好象和varchar后面的数字并没有多大关系。
      

  3.   

    我总是这样用的
    先把源表的blob数据TBlobField(AdoQuery1.FieldByName('Field')).SaveToFile('1.txt');
    再在插入新表的时候TBlobField(AdoQuery1.FieldByName('Field')).LoadFromFile('1.txt');
      

  4.   

    to icehill(闲云幽步踏古来) :
    这样好象只能一条一条记录地写吧。
    刚才发现,好象可以用SUBSTRING,但是SUBSTRING(FIELD1,1,4096)好象有问题,还要再试试。
      

  5.   

    我用SUBSTRING()解决问题了,不过后面要假‘ ’,不然有乱码,有更好的办法吗?