4

1 つの列に次のデータを含むテーブルがあります。

abc,2,2,34,5,3,2,34,32,2,3,2,2
def,2,2,34,5,3,2,34,32,2,3,2,2

このデータを別のテーブルに挿入したいのですが、FIELDTERMINATORinBULK INSERTステートメントを指定する方法と同じように、カンマを区切り記号として使用します。

T-SQLを使用してこれを行う方法はありますか?

4

3 に答える 3

3

関数を使用しSplitて文字列をテーブル変数に分割し、それらの値をテーブルに挿入する必要があります。

さまざまな長所と短所、さまざまな数のパラメーターなどを備えた、これらの分割関数がたくさんあります

これは私が非常に気に入っているものです- 非常にうまくできていて、明確に説明されています.

この関数を使用すると、列を別のテーブルの個々のエントリに問題なく変換できます。

于 2012-05-10T20:28:14.650 に答える
3

T-SQL で行う直接的な方法があるかどうかはわかりませんが、一括挿入を使用する場合はsqlcmd、CSV ファイルにエクスポートしてから、一括挿入を使用してファイルをサーバーにインポートすることができます。

dbo.Split関数を作成します。ここで参照できます。文字列を複数のレコードに分割します 。良い例がたくさんあります。

バッチ処理として実行したい場合は、実行sqlcmdして「一括挿入」できます

sqlcmd -S MyServer -d myDB -E -Q "select dbo.Split(col1) from SomeTable" 
       -o "MyData.csv" -h-1 -s"," -w 700

-s"," sets the column seperator to 

bulk insert destTable
from "MyData.csv"
with 
(
  FIELDTERMINATOR = ',',
  ROWTERMINATOR = '\n'
)

それ以外の場合は、T-SQL で直接操作できますが、列定義の ID が同じであれば。

 INSERT INTO DestinationTable
 SELECT dbo.Split(col1) FROM SomeTable
于 2012-05-10T20:37:21.760 に答える