1:在把文本文件存到d:\abc.txt
2: 测试:
use master
if object_id('t1') is not null
drop table t1
go
create table t1(a varchar(20),b varchar(20),c int,d varchar(20),e varchar(20),f numeric(10,4),g varchar(20))
go
EXEC master..xp_cmdshell 'bcp master..t1 in d:\abc.txt -c -t ,'
go
select * from t1

解决方案 »

  1.   

    EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -t , -Sservername -Usa -Ppassword'
      

  2.   

    参考:
    http://expert.csdn.net/Expert/topic/2341/2341997.xml?temp=.2739221
    SQL语句导入导出大全
      

  3.   

    http://expert.csdn.net/Expert/topic/2403/2403509.xml?temp=.2279474
    主  题:  交流--数据库中存/取文件
      

  4.   

    select * from opendatasource('MICROSOFT.JET.OLEDB.4.0','Text;DATABASE=d:\')...[abc#txt]
      

  5.   


    c:\data.tbl文本内数据如下,该文件要在SQL server服务器上的C:\下:
    1, 11
    2, 22
    3, 33create table #tablename(a int,b int)
    BULK INSERT #tablename
       FROM 'c:\data.tbl'
       WITH 
          (
             FIELDTERMINATOR = ',',  
             ROWTERMINATOR = '\n'     
          )  --定义字段分割字符和行中断符号
    select * from #tablename 
    drop table #tablename
      

  6.   

    格式文件
    在某些情况下,数据文件包含的字段数可能少于表中的列数。例如,New_auth.dat 数据文件(ASCII 格式,即字符格式)不包含与 authors2 表中 address 和 zip 列匹配的字段。New_auth.dat 文件的内容如下:777-77-7777,Smith,Chris,303 555-1213,Denver,CO,1
    888-88-8888,Doe,John,206 555-1214,Seattle,WA,0
    999-99-9999,Door,Jane,406 555-1234,Bozeman,MT,1若要将数据有选择地大容量复制到 authors2 的适当列中,请使用以下命令创建默认的格式文件(Authors.fmt):bcp pubs..authors2 out c:\authors.txt -Sservername -Usa -Ppasswordbcp 实用工具将提示输入 authors2 中每一列的文件存储类型、前缀长度、字段长度和字段终止符。每列的字段终止符均应为逗号 (,),但 contract 列除外,该列应使用行终止符 \n(换行符),因为该列是行中的最后一列。另外,因为该数据文件为 ASCII 文件,所以 contract 列的文件存储类型是 char。address 和 zip 列不应有字段终止符,并且应将其字段长度设置为 0。在提示输入格式文件名时,请指定 Authors.fmt。Authors.fmt 文件的内容如下:8.0
    9
    1  SQLCHAR  0  11 ","      1  au_id       SQL_Latin1_General_Cp437_BIN
    2  SQLCHAR  0  40 ","      2  au_lname    SQL_Latin1_General_Cp437_BIN
    3  SQLCHAR  0  20 ","      3  au_fname    SQL_Latin1_General_Cp437_BIN
    4  SQLCHAR  0  12 ","      4  phone       SQL_Latin1_General_Cp437_BIN
    5  SQLCHAR  0  0  ""       5  address     SQL_Latin1_General_Cp437_BIN
    6  SQLCHAR  0  20 ","      6  city        SQL_Latin1_General_Cp437_BIN
    7  SQLCHAR  0  2  ","      7  state       SQL_Latin1_General_Cp437_BIN
    8  SQLCHAR  0  0  ""       8  zip         SQL_Latin1_General_Cp437_BIN
    9  SQLCHAR  0  1  "\r\n"   9  contract    SQL_Latin1_General_Cp437_BIN该格式文件包含将数据从数据文件大容量复制到 Microsoft® SQL Server™ 表所需的全部信息。address 和 zip 的前缀长度为 0、字段长度为 0 且没有字段终止符,这表明数据文件中不存在这两列。但是,必须使用文本编辑器进一步修改格式文件,以确保不会将任何数据装载到 address 和 zip 中。这两列的服务器列号(格式文件中的第六个字段)应为 0:8.0
    9
    1  SQLCHAR  0  11 ","      1  au_id       SQL_Latin1_General_Cp437_BIN
    2  SQLCHAR  0  40 ","      2  au_lname    SQL_Latin1_General_Cp437_BIN
    3  SQLCHAR  0  20 ","      3  au_fname    SQL_Latin1_General_Cp437_BIN
    4  SQLCHAR  0  12 ","      4  phone       SQL_Latin1_General_Cp437_BIN
    5  SQLCHAR  0  0  ""       0  address     SQL_Latin1_General_Cp437_BIN
    6  SQLCHAR  0  20 ","      6  city        SQL_Latin1_General_Cp437_BIN
    7  SQLCHAR  0  2  ","      7  state       SQL_Latin1_General_Cp437_BIN
    8  SQLCHAR  0  0  ""       0  zip         SQL_Latin1_General_Cp437_BIN
    9  SQLCHAR  0  1  "\r\n"   9  contract    SQL_Latin1_General_Cp437_BIN现在若要将该数据文件中的数据大容量复制到 authors2 中,可以使用以下命令:bcp pubs..authors2 in c:\new_auth.dat -fc:\authors.fmt -Sservername -Usa -Ppassword另外,也可以在 SQL 查询分析器这样的查询工具中使用 BULK INSERT 语句来大容量复制数据:BULK INSERT pubs..authors2 FROM 'c:\new_auth.dat' 
    WITH (FORMATFILE = 'c:\authors.fmt')说明  因为数据文件中没有 address 和 zip 列,所以如果没有定义 DEFAULT 值,则 SQL Server 表中的这两列将包含 NULL。因此,authors2 必须允许这两列中包含空值。
      

  7.   

    --直接用下面的语句就行啦:select * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Text;HDR=NO;DATABASE=C:\'          --c:\是文本文件的存放目录
    ,aaaa#txt) --aaaa#txt是文本文件名aa.txt
      

  8.   

    --在我的电脑上的测试结果
    F1       F2         F3          F4       F5         F6                 F7   
    -------- ---------- ----------- -------- ---------- ------------------ ---- 
    0025001A 5301-0005  1           20040103 JAV-5301C1 2560.0             PCS
    4053018A 5301-0322  1           20040104 JAV-5301C1 6144.0             PCS
    4053018B 5301-0322  1           20040105 JAV-5301C1 5258.0             PCS
    4065018B 5301-0323  1           20040106 JAV-5301C1 5632.0             PCS
    4077018A 5301-0323  1           20040107 JAV-5301C1 6656.0             PCS(所影响的行数为 5 行)
      

  9.   

    --如果要规范格式,就用:
    --查询
    select F1=cast(f1 as char(8))
    ,F2=cast(f2 as char(10))
    ,F3=cast(f3 as int)
    ,F4=cast(f4 as char(8))
    ,F5=cast(f5 as char(10))
    ,F6=cast(f6 as money)
    ,F7=cast(f7 as char(3))
    from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Text;HDR=NO;DATABASE=C:\' --c:\是目录
    ,aaaa#txt) --aa#txt是文本文件名aa.txt/*--测试结果
    F1       F2         F3          F4       F5         F6                    F7   
    -------- ---------- ----------- -------- ---------- --------------------- ---- 
    0025001A 5301-0005  1           20040103 JAV-5301C1 2560.0000             PCS
    4053018A 5301-0322  1           20040104 JAV-5301C1 6144.0000             PCS
    4053018B 5301-0322  1           20040105 JAV-5301C1 5258.0000             PCS
    4065018B 5301-0323  1           20040106 JAV-5301C1 5632.0000             PCS
    4077018A 5301-0323  1           20040107 JAV-5301C1 6656.0000             PCS(所影响的行数为 5 行)--*/
      

  10.   

    select * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Text;HDR=NO;DATABASE=C:\'          --c:\是文本文件的存放目录
    ,aaaa#txt)
    的结果只有一列?F1                                                                                                                                                                                                                                                              
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
    0025001A 5301-0005  1           20040103 JAV-5301C1 2560.0             PCS
    4053018A 5301-0322  1           20040104 JAV-5301C1 6144.0             PCS
    4053018B 5301-0322  1           20040105 JAV-5301C1 5258.0             PCS
    4065018B 5301-0323  1           20040106 JAV-5301C1 5632.0             PCS
    4077018A 5301-0323  1           20040107 JAV-5301C1 6656.0             PCS(5 row(s) affected)
      

  11.   

    to zjcxc(祝大家新年快乐.邹建.共享果) ( ) 信;
    老大, opendatasource( provider_name, init_string )中init_string你是如何得来的格式,能告诉小弟吗? 真乃神人也!!! 
      望 赐教! Thanks a lot!
      

  12.   

    提示: 马克的"导入导出大全中" ,导入/出文件名应该加 "", 因为长文件名时必须在引号中;(这样才通用)
    -------
    如有误,请指正,Thanks ;
      

  13.   

    opendatasource( provider_name, init_string )中
    init_string是根据以前ACCESS数据库中处理的一些经验加测试得到的.