web-dev-qa-db-ja.com

UTF-8フラットファイルのインポート中に、SSISがラインフィード{LF}行区切り文字を認識しないのはなぜですか?

SSISを使用して、utf-8エンコードされたフラットファイルからSQL Server 2008にデータをインポートしようとしています。これは、Notepad ++で行データの終わりがどのように見えるかです。

enter image description here

ファイル接続マネージャがどのように見えるかを示す画像がさらに2つあります。

enter image description here

enter image description here

ファイル接続マネージャーのプレビューでデータが正しく表示されていることがわかります。このデータをインポートしようとすると、行がインポートされません。行区切り文字が見つからなかったことを示すエラーメッセージが表示されます。ファイル接続マネージャーの画像で、ヘッダー行区切り文字と行区切り文字が両方とも{LF}に設定されていることがわかります。これは正しいプレビューを生成するのに十分だったので、インポートが機能しない理由がわかりません。私は結果がゼロになった多くのことを試しました:

  • Wizard SSMSへのインポート...同じ結果を使用して試しました
  • データ変換を使用して試したが、影響はなかった
  • 行区切り文字を(0a)に設定しようとしましたが、同じ結果が得られました

[フラットファイルソース[582]]警告:ヘッダー行の読み取り中にデータファイルの終わりに達しました。ヘッダー行の区切り文字とスキップするヘッダー行の数が正しいことを確認してください。

これを見てくれてありがとう、そしてあなたが提供できるどんな助けにも本当に感謝します。

29
K Richard

上記の答えはひどく複雑なようです、ファイルの行末を変換するだけです

Dim FileContents As String = My.Computer.FileSystem.ReadAllText("c:\Temp\UnixFile.csv")

Dim NewFileContents As String = FileContents.Replace(vbLf, vbCrLf)

My.Computer.FileSystem.WriteAllText("c:\temp\WindowsFile.csv", NewFileContents, False, New System.Text.UnicodeEncoding)

ここ から再ハッシュ

1
Richard

この問題は、WindowsのSSISを介してUnix、Macなどの別のプラットフォームで生成されたFlatFileを使用しようとした場合にも発生します。

このようなシナリオでは、unix2dosコマンドを使用して、ファイル形式をUNIXからDOSに変換するだけです。

unix2dos file-to-convert
0
Jeevan