BULK INSERT
Copies a data file into a database table or view in a user-specified format.Syntax
BULK INSERT [ [ 'database_name'.] [ 'owner' ].] { 'table_name' FROM 'data_file' } 
    [ WITH 
        ( 
            [ BATCHSIZE [ = batch_size ] ] 
            [ [ , ] CHECK_CONSTRAINTS ] 
            [ [ , ] CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ] 
            [ [ , ] DATAFILETYPE [ = 
                { 'char' | 'native'| 'widechar' | 'widenative' } ] ] 
            [ [ , ] FIELDTERMINATOR [ = 'field_terminator' ] ] 
            [ [ , ] FIRSTROW [ = first_row ] ] 
            [ [ , ] FIRE_TRIGGERS ] 
            [ [ , ] FORMATFILE = 'format_file_path' ] 
            [ [ , ] KEEPIDENTITY ] 
            [ [ , ] KEEPNULLS ] 
            [ [ , ] KILOBYTES_PER_BATCH [ = kilobytes_per_batch ] ] 
            [ [ , ] LASTROW [ = last_row ] ] 
            [ [ , ] MAXERRORS [ = max_errors ] ] 
            [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ] 
            [ [ , ] ROWS_PER_BATCH [ = rows_per_batch ] ] 
            [ [ , ] ROWTERMINATOR [ = 'row_terminator' ] ] 
            [ [ , ] TABLOCK ] 
        ) 
    ] 
BULK INSERT Northwind.dbo.[Order Details]
   FROM 'f:\orders\lineitem.tbl'
   WITH 
      (
         FIELDTERMINATOR = '|',
         ROWTERMINATOR = '|\n'
      )This example specifies the FIRE_TRIGGERS argument.BULK INSERT Northwind.dbo.[Order Details]
   FROM 'f:\orders\lineitem.tbl'
   WITH
     (
        FIELDTERMINATOR = '|',
        ROWTERMINATOR = ':\n',
        FIRE_TRIGGERS
      )

解决方案 »

  1.   

    --/* dBase III文件
    select * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'dBase III;HDR=NO;IMEX=2;DATABASE=C:','select * from [客户资料3.dbf]')
    --*/--/* FoxPro 数据库
    select * from openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:',
    'select * from [aa.DBF]')
    --*//**************导入DBF文件****************/
    select * from openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;
    SourceDB=e:VFP98data;
    SourceType=DBF',
    'select * from customer where country != "USA" order by country')
    go
    /***************** 导出到DBF ***************/
    如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句insert into openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:',
    'select * from [aa.DBF]')
    select * from 表说明:
    SourceDB=c:  指定foxpro表所在的文件夹
    aa.DBF        指定foxpro表的文件名. 
      

  2.   

    --可以这样转换嘛.
    select col1=cast(col1 as varchar)
    from openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=d:\',
    'select * from [0926.DBF]') as a
      

  3.   

    不地,用openrowset/opendatasource/链接服务器的处理方式,数据类型都会自动转换成sql server的标准数据类型,所以有时可能会出来读不出数据的情况可能最好的办法是自己写程序,直接用打开 vfp 驱动程序的方式来打开vfp数据库,再导入sql
      

  4.   

    客户端应该安装了SQL客户端吧,建议调用DTS包来实现dbf到sql的转换.
    这样程序和转换内容分离了,以后万一结构有改动,只要修改一下DTS包就可以了.
    而且DTS包功能很强大,万一转换失败也可以自动记录错误日志等等,方便查询.
      

  5.   

    我后来又想想了。我在服务端建立一个字段类型库。
    用[openrowset/opendatasource/链接服务器的处理方式]来快速导入。
    将导入的数据统统转换成为我需要的字段类型。很简单,只需要查询每个字段名的字段类型,然后改变。导出的时候也先导出,然后再改变字段类型。这样速度和字段都可以保证。
    不过我没有这样做过,有没有哪位老大评估一下这个方法呢
      

  6.   

    人工控制的话,DTS包就可以啊,可以写动态属性任务,把转换的各个细节都动态的设置.
      

  7.   

    DTS,问题在于目标表和源数据表名必须要固定。如果有两个操作人员。就不好控制并行操作了。要是dts能够传参数就好了
      

  8.   

    邹建老大理解非常正确,给出的提示也非常有用。完全可以控制到字段类型。select lurufcode=cast(lurufcode as varchar(50)),cityid = cast(lurufcode as varchar(50))
    into bbbb
    from openrowset('MSDASQL',
    'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=E:\vf data',
    'select * from [A08_0401.dbf]') as a