今天一定要把这2个东东给摆平,都弄了我好久了,实在纳闷!
这样吧,比如表A有字段a,b,c,d,e。
88.TXT文本格式内容是(分隔符是tab)
a c d
1 2 3
2 3 4
4 5 6
我现在要把txt文档的内容插入到表A。
运行结果:
a   b  c d  e
1 null 2 3 null
2 null 3 4 null
4 null 5 6 null数据库用的是SQL SERVER2000
1、不管用什么方法,只用一条SQL语句能实现不?
2、数量比较多,用insert into和bulk insert是否可以实现,哪个效率比较高?如果可以实现,具体代码写出来。

解决方案 »

  1.   

    --参考
     如何使用BCP导出格式文件 BCP不仅可以根据表、视图导入导出数据,还可以配合格式文件对导入导出数据进行限制。格式文件以纯文本文件形式存在,分为一般格式和xml格式。用户可以手工编写格式文件,也可以通过BCP命令根据表、视图自动生成格式文件。 EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:\currency_format1.fmt -c -T' 上述命令将currency表的结构生成了一个格式文件currency_format1.fmt,下面是这个格式文件的内容。 9.0 

    1 SQLCHAR 0 6 "\t" 1 CurrencyCode SQL_Latin1_General_CP1_CI_AS 
    2 SQLCHAR 0 100 "\t" 2 Name SQL_Latin1_General_CP1_CI_AS 
    3 SQLCHAR 0 24 "\r\n" 3 ModifiedDate  这个格式文件记录了这个表的字段(共3个字段)类型、长度、字符和行分割符和字段名等信息。 BCP还可以通过-x选项生成xml格式的格式文件。 EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:\currency_format2.fmt -x -c -T'  
    xml格式文件所描述的内容和普通格式文件所描述的内容完全一样,只是格式不同。 
      

  2.   

    if object_id('tempdb..#')is not null drop table #
    go
    create table #(a varchar(10),c varchar(10),d varchar(10))
    bulk insert #  
    from 'E:\Test.txt'
    with(
            FIELDTERMINATOR = ' ',
            ROWTERMINATOR = '\n'        )
    insert ta(a,c,d)select * from #
      

  3.   

    http://topic.csdn.net/u/20091203/11/b055b00d-326a-4284-b631-e6cc1ff4027c.html
      

  4.   

    G:\format.fmt 8.0
    3
    1       SQLCHAR       0       20      ","      2     userName                     Chinese_PRC_CI_AS
    2       SQLCHAR       0       100     ","      4     address                      Chinese_PRC_CI_AS
    3       SQLCHAR       0       20      "\r\n"   5     phone                        ""
    G:\test.txtuserName,address,phone
    hua,湖南,5971898--SQL SERVER
    --建表
    CREATE TABLE userinfo(id int identity,userName varchar(20),
                          pass varchar(20),address varchar(100),phone varchar(20),
                          email varchar(128),registerTime datetime)--导入
    BULK INSERT userinfo
        FROM 'G:\test.txt'
    WITH
    (
        FORMATFILE = 'G:\format.fmt',
        FIRSTROW = 2
    )
    --查看数据
    SELECT * FROM userinfo;/*
    id          userName      pass      address      phone    email     registerTime     
    ----------- --------- ---------- ----------- ---------- ---------- -------------
    1           hua           NULL        湖南    5971898      NULL       NULL(1 行受影响)
    */
      

  5.   

    肯定看了啊,问题是还没根本解决啊。用insert into的话,txt文档不会识别列,把几个字段都合为一个字段了。用bulk insert的话,就不能选择插入的列。
      

  6.   

    insert into B (a,b,c,d,e) select (a,b=null,c,d,e=null) from  A