insert into [table1] select [col] from [table2] where ...
table1的字段要和select出的字段匹配菜鸟第一次回答,答错了楼主莫怪,也请楼下的大虾指教

解决方案 »

  1.   

    insert into 表1 select * from 表2
      

  2.   

    可以借助SqlServer对Xml的支持一次把数据传到Sqlserver中批量插入或修改。可以参考如下的存储过程:sp_xml_preparedocument
    OPENXMLsp_xml_removedocument
      

  3.   

    divmedia() 你的那个表2是临时表吗?
               我这里是这样的,我首先要从日志文件中读出数据,然后形成SQL语句插入到数据  库。
    hbxtlhx(平民百姓-自已动手,丰衣足食) 能说的详细点吗?
     
    呵呵,我也是刚做数据库的东西,
      

  4.   

    首先把数据写到一个xml文件里,然后把xml文件里面的内容写进数据库!
      

  5.   

    lz的日志文件是sql日志还是存放在外部文件里面?
    如果是外部文件可以考虑用sqlserver的OPENROWSET函数,参见sqlserver帮助:
    http://blog.csdn.net/Hopewell_Go/archive/2006/09/09/1198134.aspx
      

  6.   

    楼主把问题描述清楚一些:这些待Insert的记录是在程序中组织还是来源于一个有格式的文本文件?如果存在于有格式的文本文件中,可以使用SQL Server的BCP或者BULK INSERT功能。
      

  7.   

    还是一条条插入比较安全哦,批量插入的错误不好处理呢。 如果是表之间的数据进行传递可以使用select * into语法
      

  8.   

    insert into table (...) value(...);
    insert into table (...) value(...);
    insert into table (...) value(...);
    insert into table (...) value(...);
    insert into table (...) value(...);
    sql语句中用“;”或者空格分开,就能当成一句执行!
      

  9.   

    select * into table from table
      

  10.   

    insert into table (...) 
              select ....
    union all select ....
    union all select ....
    union all select ....
    union all select ....
    ......
      

  11.   

    MySQL当中倒是有批量插入数据的功能。如果楼主的需求日志插入数据很频繁的话,估计数据库会响应不过来,造成SQL SERVER的死锁。曾经做过这样的项目,是收集WEB上的数据,用户请求一次插入一条记录,结果SQL SERVER响应不过来了。flexgo()朋友的建议与我们项目后来沿用思路一致。不过不是直接来操作XML文件,采用了开源Log4net项目的方式来写日志,然后导入SQL。
      

  12.   

    在VS2003\VS2005中引用using System.Data.SqlClient; 
    有一个SqlBulkCopy对象可以实现批量存数据到SQL server数据库中.
      

  13.   

    insert into table1(xx,xx,..) select xx,xx,.. from table2
      

  14.   

    wangkun9999(蜘蛛+Lucene.net构建搜索引擎) :我的日志文件是存放在外部文件的,libin_ftsafe(子陌红尘:TS for Banking Card):些待Insert的记录是来源于一个有格式的文本文件。fowolf() :试试。linjone() :VC.net2003中有这样方法吗?
      

  15.   

    bulk insert into select * from Table
      

  16.   

    fowolf() :你说的这种方法和一条一条插入有区别吗?我觉得这个区别不大啊,就象hedongyang(笑笑) 所说的那样SQL还是得一条一条相应啊。
      

  17.   

    insert into 表1 select * from 表2表1,表2均可是临时表
      

  18.   

    楼主给分任何数据都只能一条一条插入数据库,如果不想手动输入,就用程序来帮助程序帮助,就是一个循环 -- 读取数据,写入数据库
    下面是伪代码Open File
    Open SQL
    while(!file.EOF)
    {
        ReadRecord()
        insert into table (...) value(...)
    }
    Close SQL
    Close File
      

  19.   

    不是SQL的问题,像是对日志的解决方案
      

  20.   

    xray2005(风车车--要飞翔,必须靠自己!):我的数据要从日志文件中读取。这个临时表2如何形成。skyell() :不要着急,我可以再加分,呵呵。IT_zen(今天对待工作的态度决定了明天的前途):现在日志体系已经形成,差的就是导入到数据库,进行审计。其实也算是日志系统的一个解决方案。FengLing7885():如何实现?
      

  21.   

    你先从数据库里把记录取出来,放在DataTable或者DataView,然后在DataView或者DataTable里修改,要写回去的时候用CommandBuilder就能把你修改过的记录写回到数据库中给分给分,我这用的是ADO.NET的
      

  22.   

    首先把数据写到一个xml文件里,然后把xml文件里面的内容写进数据库!
      

  23.   

    insert into table1(col,col)select col.col from table2 order by id desc
      

  24.   

    楼上有不少人都提到了先把数据写到XML文件中,然后在把XML文件里的内容写进数据库.
    我个人认为这个方法.........................................................非常的好.
    我喜欢.....................................................................这个方法.
      

  25.   

    例子:
    可以放在存储过程中
    如数据库名为:
    SET @bcpString='bcp '+@table+' in '+@path+'\'+@file+' -T -f'+' '+@fmtPath+'\'+@fmtFile
    EXEC master..xp_cmdshell @bcpString
      

  26.   

    你可以在cmd窗口中 用这个语句先测一下
    dbname:aa
    tablename:bb
    bcp "aa..bb" out "d:\abc.txt" -c -t , -S 192.168.0.32 -U sa -P 123
    bcp aa..bb in d:\abc.txt -c -t , -S 192.168.0.32 -U sa -P 123用分隔符,隔开每个字段
      

  27.   

    将多个SQL组合起来,一起执行就可以了
      

  28.   

    定义一个字符串变量,把sql组合起来给字符串变量,一次传给。net执行就好了string strSql="insert into table1(...) values(...);";
    strSql+="insert into table2(...) values(...);";
    strSql+="insert into table3(...) values(...);";
    .
    .
    .
    .
    .
    最后传给。net command对象执行就好了
      

  29.   

    这都是可以的!但是要记得,显示地启用一个Trsanaction,这样才能比较快。如果你使用sql server默认的做法,它只会为每一条sql语句自动启用一个trans,这是会让它变慢的。