从数据库导出为txt文件的时候,选择的行分隔符为\n$$\n,就是$$符号的前后各有一个回车符号再把这个txt导入到另外服务器上的时候,导入向导中只能选择$$为行分隔符,如果是{CR}$${CR}就会提示“未能在前8k数据中找到有效的行分隔符”如果直接选择“$$”为行分隔符,会造成出错:如果某个数据列上含有“$$”字符的话,这一行数据就被分开,当做两行数据来处理了为什么{CR}$${CR}不能使用呢

解决方案 »

  1.   

    写schema,然后设定分隔符,试试。{CR}$${CR} 这个sql中貌似不认。________________________________________________________________________________________
    sql访问txt文件的两种方法
    select * from openrowset('microsoft.jet.oledb.4.0','text;hdr=yes;database=E:\',a#txt)
    select * from opendatasource('microsoft.jet.oledb.4.0','text;hdr=yes;database=E:\')...a#txtName              ID          Xtype UID
    sysrowsetcolumns   4           S     4
    sysrowsets         5           S     4
    sysallocunits      7           S     4
    sysfiles1          NULL        S     4
    syshobtcolumns      ;          S   
    __________________________________________________________________________________________
    查询文本文件的内容:上面的方法,是把所有的内容放在一列里面,如果要分成多个列的话,则需要定义schema.ini文件。schema.ini要和数据文件放在同一个目录下面schema.ini文件的定义方法:
      [b.txt]
      ColNameHeader=true
      format=tabdelimited
      col1=Name Text WIDTH 10
      col2=ID Text WIDTH 10
      col3=Xtype Text WIDTH 10
      col4=UID Text WIDTH 10
        第一行:如果文本文件的数据有列名,并且作为查询结果的列名的话,则ColNameHeader应该为true,否则定义为false,但是如果后面定义了列名的话,则不使用文本文件中数据的列名,而使用后面定义的列名。但是如果数据有列名的,最好定义为true,否则的话,数据的列名将作为表中的数据。
        第二行:format定义数据的分隔符。一般使用的分隔符有空格,制表符,逗号。分别对应的是delimited( )(注意括号里应该有一个空格),tabdelimited,csvdelimited。在选择分隔符的时候,建议使用tab,因为这样的话数据看起来比较整齐,但是不能为了保证数据的严格整齐,而在数据当中使用多个tab,这样的话读取的数据就会出现错误。其他的逗号和空格同样。
        第三行到最后:制定列名。在这里需要制定每一列的列名,数据类型。数据类型包括:
          microsoft jet数据类型:bit,byte,short,long,currency,single,double,datetime,text,momo。
          ODBC数据类型:char,float,int,longchar,date.
        后面还应该有:指定字符集:使用ansi或者oem
        特别数据类型转换。后面两个如果没有特殊情况的话,可以不写,才用默认的即可。
      

  2.   

    up一下导入文本时用的企业管理器中的向导,如果直接用“{CR}{LF}”是可以分行的(只是分行结果不正确,“$$”也成了单独一行),22||abc
    $$
    33||efg
    $$
    44||hij