将固定宽度的UTF-8文件导入SQL 2008R2,即变量文件名

时间:2013-06-18 07:35:39

标签: sql utf-8 import width fixed

我必须将具有不同名称(如下所示)的文本文件导入SQL Server 2008。

  1. XYZ0000746263.txt
  2. XYZ0000746269.txt
  3. XYZ0000745860.txt
  4. 文件名始终以XYZ开头,且数字始终高于之前的文件。

    文件格式为固定宽度,采用UTF-8编码。

    SHINST 1020130613    
    SHINSD0745860182650  940PI67100000           dataw11     2012CH 01002601900100 848CRU        
    SHINSD0745860182650  940PI67066900           dataa12     9434CH 00701801400030 848CRU         
    SHINSD0745860182650  940PI67160300          adsfaf13     1205CH 04203601000160 848CRU     
    SHINSD0745860182650  940PI67171300           data 14     1205CH 01803501200120 848ND1  
    SHINSD0745860182650  940PI67079000           asdfs15     8400CH 00702601400040 848ND1    
    SHINSD0745860182620  940PI67053900           data 16     6877CH 01904101100130 848ND1    
    SHINSD0745860182620  940PI67156100          text  17     3003CH 08906202902460 848ND2    
    SHINSD0745860182650  940PI67110700         alskdjf18     1000CH 02603900900130 848ND2    
    SHINSD0745860182620  940PI67123900       asfasdffa19     8048CH 01502300900020 848ND2    
    SHINSD0745860182650  940PI67066300           data 20     8952CH 01002601900090 848ND2    
    SHINSF000012
    

    第一行包含SHINST,然后是文件中的记录数,然后是YYYYMMDD格式的日期。

    记录包含SHINSD,然后是13位数字,然后是固定宽度记录。

    最后一行包含SHINSF,然后是一个六位数字,包含文件的总行数。

    我想自动将此格式的文件导入SQL表。怎么办?

1 个答案:

答案 0 :(得分:0)

您可以尝试:

BULK INSERT tablename FROM 'c:\File.txt' WITH (FIELDTERMINATOR = ' ')

如果''(空格)是你的字段分隔符。
当然,表格表名列必须与文件中的相同(计数和长度)。
您可以创建一个过程并仅为其提供文件路径,如exaples

中所示

唯一的问题是文件中的第一行和最后一行,因为它们不同而且我不知道你是否需要插入mas。如果你需要忽略它们,也许你需要一个脚本来消除它们。