{=start= 
  #产品序列号 =123456789012; 
  #日期      ="20080101164543"; 
{=step= 
  #检验步骤  =hssStatus; 
  #结果      =FAIL; 
  #详细参数  =( 
      (hssStatus1,1.1,FAIL) 
      (hssStatus2,2.5,PASS) 
      (TestTime, 0.88, Minutes ) 
  ); 
}=step; 
{=step= 
  #检验步骤  =ydlSt; 
  #结果      =PASS; 
  #详细参数  =( 
      (wkfold,1.5,PASS) 
      (TestTime, 0.11, Minutes ) 
  ); 
}=step; 
=start=} 
如以上文件的格式, 
一个“产品序列号”有不定多个“检验步骤”,一个“检验步骤”有不定多个“详细参数”。 
其中TESTTIME一行的内容可以不理它。 
想把这样格式的文件内容存进数据库这样的一张表里,字段列如下: 
产品序列号          检验步骤      结果    详细参数      详细参数结果 
123456789012      hssStatus  FAIL  hssStatus1  FAIL 
123456789012      hssStatus  FAIL  hssStatus2  PASS  
123456789012      ydlSt      PASS  wkfold      PASS 把数据存在多个表也可以,主要是怎么解析出文件的内容? 最好用C#,其它的也可以。
本来已经发在.NET版了,这里人多,也发一个,大家帮忙分析一下。

解决方案 »

  1.   

    --可以將文本內容插入到一個表裡,然後處理
    bulk insert test
    from 'E:\Test.txt'
    with(
            FIELDTERMINATOR = ',',
            ROWTERMINATOR = '\n'        )
    select * from test
      

  2.   

    楼主贴出来的数据格式似乎符合json的格式,在前台程序可以用json来读取数据。。方便多了
      

  3.   

    BULK INSERT
    [ database_name . [ schema_name ] . | schema_name . ] [ table_name | view_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 ]
    [ [ , ] ERRORFILE = 'file_name' ]
    )] 
    参数 
    database_name 
    包含指定表或视图的数据库的名称。如果未指定,则默认为当前数据库。 
    schema_name 
    表或视图架构的名称。如果用户执行大容量导入操作的默认架构为指定表或视图的架构,则 schema_name 是可选的。如果未指定 schema 并且用户执行大容量导入操作的默认架构与指定表或视图的架构不同,则 SQL Server 将返回一条错误消息,同时取消大容量导入操作。 
    table_name 
    要将数据大容量导入其中的表或视图的名称。只能使用其所有列均引用相同基表的视图。有关向视图中加载数据时有哪些限制的详细信息,请参阅 INSERT (Transact-SQL)。 
    ' data_file ' 
    数据文件的完整路径,该数据文件包含要导入到指定表或视图中的数据。使用 BULK INSERT 可以从磁盘(包括网络、软盘、硬盘等)导入数据。 
    data_file 必须基于运行 SQL Server 的服务器指定有效路径。如果 data_file 为远程文件,则指定通用命名约定 (UNC) 名称。 
    BATCHSIZE = batch_size 
    指定批处理中的行数。每个批处理作为一个事务复制至服务器。如果复制操作失败,则 SQL Server 提交或回滚每个批处理的事务。默认情况下,指定数据文件中的所有数据为一个批处理。 
    有关详细信息,请参阅管理大容量导入的批处理。 
    CHECK_CONSTRAINTS 
    指定在大容量导入操作期间,必须检查所有对目标表或视图的约束。若没有 CHECK_CONSTRAINTS 选项,则所有 CHECK 和 FOREIGN KEY 约束都将被忽略,并且在此操作之后表的约束将标记为不可信。
    本文来源于<a href='http://www.bloggoo.net'>河床博客</a> 
      

  4.   

    用bcp可以这样:
    exec master..xp_cmdshell 
      'bcp "select * from test " queryout e:\test.txt -c -t, -r\n -Sservername -Uusername 
     -Ppassword'
      

  5.   

    问题解决在
    http://topic.csdn.net/u/20081020/13/c4727c63-8224-447d-aea5-f0d20c6fa902.html
      

  6.   

    Microsoft 上说codepage='raw'是“不翻译“,请教是什么意思?