麻烦各位大侠帮我写下,我要把文本数据导入到数据库,但是我本文只有3个字段,我数据库有7个字段,我怎么把文本字段的对应到数据库,我不想用读文本的方式,数据库的bulk   insert 可以实现吗,能字段对应上可以吗,比如我的数据库表(userinfo) id identity,userName,pass,address,phone,email,registerTime
文本格式是 
userName,address,phone
hua,湖南,5971898
这个可以用SQL脚本导入吗,我的数据很大,我现在是在程序读文本的方式一行行插入的,速度太慢了,要5,6分钟

解决方案 »

  1.   

    可以呀,方式太多了,最简的还是dts
      

  2.   

    能帮我写一下吗,SQL脚本方式的,我不知道怎么写的,谢谢了啊
      

  3.   

    http://blog.csdn.net/Imain/archive/2006/11/20/1399667.aspx 
      

  4.   

    批量导入用这个:   
      请参考:   
      1:不带有条件的从文本导入到数据库:   
      EXEC   master..xp_cmdshell   'BCP   bank..sss   in   E:\实验用数据库\ddd.txt   -c   -S7824558CF32B4F1\SQL01   -Usa   -P520520'   
        
      2:不带有条件的从数据库导出到文本:   
      EXEC   master..xp_cmdshell   'BCP   bank..bank   out   E:\实验用数据库\aaa.txt   -c   -S7824558CF32B4F1\SQL01   -Usa   -P520520'   
        
      3:带有条件的从数据库导出(转换成本)   
      EXEC   master..xp_cmdshell   'BCP   "select   *   from   bank..sss   where   conut<10   "   queryout   E:\实验用数据库\sss.txt   -c   -S7824558CF32B4F1\SQL01   -Usa   -P520520'   
      

  5.   

    G:\format.xml<?xml version="1.0"?>
    <BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <RECORD>
      <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="20" COLLATION="Chinese_PRC_CI_AS"/>
      <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="Chinese_PRC_CI_AS"/>
      <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="20" COLLATION="Chinese_PRC_CI_AS"/>
     </RECORD>
     <ROW>
      <COLUMN SOURCE="1" NAME="userName" xsi:type="SQLVARYCHAR"/>
      <COLUMN SOURCE="2" NAME="address" xsi:type="SQLVARYCHAR"/>
      <COLUMN SOURCE="3" NAME="phone" xsi:type="SQLVARYCHAR"/>
     </ROW>
    </BCPFORMAT>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)--导入
    INSERT INTO userinfo(userName,address,phone)
    SELECT * FROM OPENROWSET(BULK 'G:\test.txt',FORMATFILE='G:\format.xml',FIRSTROW=2) AS T;--查看数据
    SELECT * FROM userinfo;/*
    id          userName      pass      address      phone    email     registerTime     
    ----------- --------- ---------- ----------- ---------- ---------- -------------
    1           hua           NULL        湖南    5971898      NULL       NULL(1 行受影响)
    */
      

  6.   

    有个语法错误啊
    在关键字 'BULK' 附近有语法错误。
      

  7.   

    对啊
    我的是SQL server2000呢,呵呵
    多谢了,如果对了我也可以改成2005,重装个数据库也可以,谢谢你了啊
      

  8.   

    sqlserver 2000可以吗,如果可以的话我就不用在安装sqlserver2005了
      

  9.   

    2000一样的.不过2000中不可以用xml格式化文件.
    只能用非xml格式化文件.
    非xml格式化文件比xml格式化文件的可读性差很多
      

  10.   

    请你帮我写个啊,我要导数据的时候最好用SQL 2000的,我们这里客户大多是这个数据库的,SQL 2005的企业版太大了,能帮帮忙吗
      

  11.   

    G:\format.fmt8.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 行受影响)
    */
      

  12.   

    8.0  --这个8,表示版本是8.0
    3    --这个3.表示数据文件中有几列.
    第一列的1,2,3表示数据文件的列的序号               
    而后面的第六列的2,4,5表示userName,Address,phone在表中.是第几列
    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                        ""