SQL Server bcp ユーティリティを使用して、samba 共有からテキスト ファイルをインポートしようとしています。bcp が Unix の行末で詰まる。Unix または Windows のいずれかで、行末を Windows スタイルに変更するための中間ステップを追加できると確信しています。しかし、変更せずに Unix からファイルをインポートしたいと思います。
SQL Server bcp に Unix の行末を探すように指示する方法があるかどうか知っている人はいますか?
SQL Server bcp ユーティリティを使用して、samba 共有からテキスト ファイルをインポートしようとしています。bcp が Unix の行末で詰まる。Unix または Windows のいずれかで、行末を Windows スタイルに変更するための中間ステップを追加できると確信しています。しかし、変更せずに Unix からファイルをインポートしたいと思います。
SQL Server bcp に Unix の行末を探すように指示する方法があるかどうか知っている人はいますか?
簡単な答えは、コメントの1つで述べられているように、行ターミネータとして16進数を使用することです。
-r 0x0a
ROWTERMINATOR ='\ n'を設定しようとしましたか?
bcp でフォーマット ファイルを使用し、ターミネータを \n として指定する必要があります。対話型コマンド ラインは常に \r を追加します。ここで、フォーマット ファイルは指定したとおりのものを使用します。http://www.eggheadcafe.com/software/aspnet/32239836/bcp-out-with-char10-as-row-terminator.aspxを参照してください。
フォーマット ファイルの作成は BOL で十分に説明されていますが、助けが必要な場合は、元の投稿にコメントするか更新してください。
bcp コマンドラインからこれを行うことはできないと思います。ただし、次の SQL バージョンは機能すると思います。
DECLARE @Command nvarchar(1000)
SET @Command = N'BULK INSERT MyTable
FROM ''<path\file>''
WITH (ROWTERMINATOR = '''+CHAR(10)+''')'
exec sp_executeSQL @Command
bcpを詳細に学習する時間があまりない場合は、次のWebサイトを確認してください。http: //msdn.microsoft.com/en-us/library/ms190759.aspx
簡単な例、インタラクティブプロンプトの意味、完了したらフォーマットを保存するオプション(これを繰り返し行う場合)などを説明します。
データが大きい場合や、必要なファイルが複数ある場合は、最初にテーブルを作成してから、少し試してエクスポートし(bcpは最初の引数として単純な選択を行います)、列ごとにインタラクティブに形式を選択できます。特別な理由がある場合は、保存されたfmtファイルを後で掘り下げることができます。
はい、これは腹立たしいです。私の理解では、SQL Server bcp は、使用される行末記号の前に常に \r を挿入します。したがって、-r を使用しない場合は、\n のみが使用されると予想されます。しかし、そうではありません... \r\n を使用できるように、愚かにも \r を挿入します。-r \r\n を指定しても機能しません。\r\r\n 行末が必要になったのではないかと思います。これはすべて、Windows の世界で、初心者の生活を楽にしようとして、他の人にとってはほぼ不可能に近いものにしようとしている愚かなコーディングの仕事です。Sybase から SQL サーバーにファイルを転送するときにこの問題が発生しました。解決策は、Sybase からの bcp out で -r \r\n を指定することでした (これは、要求どおりに機能します!) および -r \n (または単にドンSQL Server bcp in には -r) を使用しないでください。