web-dev-qa-db-ja.com

OPENROWSETでSPLIT_STRINGを使用する

OPENROWSET BULKの結果を変数に渡し、STRING_SPLITを使用して行に分割できるようにする方法はありますか?

何かのようなもの:

    DECLARE @MyString = FROM OPENROWSET (BULK 'C:\Temp\File.csv', SINGLE_CLOB) MyFile

SELECT * FROM STRING_SPLIT ( @MyString , '\n' )
2
Daarwin

これが1つの解決策です。

REPLACEを使用してCR/LFをファイルに含まれていないことがわかっている単一の文字(チルド)に置き換え、それをSTRING_SPLITで使用しました

DECLARE @CrLf CHAR(2) = CHAR(13) + CHAR(10)
DECLARE @BulkColumn VARCHAR(max)

SELECT @BulkColumn = replace(BulkColumn, @CrLf, '~')
FROM OPENROWSET(BULK 'C:\Temp\z.txt', SINGLE_CLOB) MyFile

SELECT *
FROM string_split(@BulkColumn, '~')

| value |
|-------|
| one   |
| two   |
| three |
2
Scott Hodgin