0

次のような異なる名前のテキスト ファイルを SQL Server 2008 にインポートする必要があります。

  1. XYZ0000746263.txt
  2. XYZ0000746269.txt
  3. XYZ0000745860.txt

ファイル名は常に 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は、ファイルの合計行数を含む 6 桁の数字が含まれます。

この形式のファイルを SQL テーブルに自動的にインポートしたいと考えています。どうすればそれができますか?

4

1 に答える 1

0

あなたは試すことができます:

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

「 」(スペース) がフィールド区切り文字の場合。
もちろん、テーブル テーブル名の列は、ファイル内と同じでなければなりません (カウントと長さ)。
これらの例のように、プロシージャを作成してファイル名パスのみを指定できます

唯一の問題は、ファイルの最初と最後の行です。それらが異なるため、mas を適切に挿入する必要があるかどうかわかりません。それらを無視する必要がある場合は、それらを排除するためのスクリプトが必要になる場合があります。

于 2013-06-18T07:45:28.580 に答える