40

SQL クエリ (SQL Server 2005) からテキスト ファイルを読み込もうとしていますが、まったくうまくいきません。EXEC と xp_cmdshell でいろいろ試しましたが、うまくいきません。これは、私がこれにアプローチしようとした一般的な方法です。

CREATE TABLE temp (data varchar(2000));
INSERT temp EXEC master.dbo.xp_cmdshell 'type file.txt';

次に、一時テーブルからデータを選択しようとします。私はたくさん検索しましたが、何が間違っているのかわかりません。ヘルプ?

4

4 に答える 4

58

これを発見しました:

SELECT * FROM OPENROWSET(BULK N'<PATH_TO_FILE>', SINGLE_CLOB) AS Contents

ファイルの内容を varchar(max) として取り込みます。次のように置き換えますSINGLE_CLOB

SINGLE_NCLOBnvarchar(max) SINGLE_BLOBの場合 varbinary(max) の場合

http://www.mssqltips.com/sqlservertip/1643/using-openrowset-to-read-large-files-into-sql-server/に感謝します。

于 2011-10-20T16:46:21.037 に答える
46

あなたのテキストファイルはどのように見えますか?? 各行のレコード?

BULK INSERTステートメントを確認する必要があります。次のようになります。

BULK INSERT dbo.YourTableName
FROM 'D:\directory\YourFileName.csv'
WITH
(
  CODEPAGE = '1252',
  FIELDTERMINATOR = ';',
  CHECK_CONSTRAINTS
) 

ここでは、CSV ファイルをインポートしていますが、テキスト ファイルも同様にインポートできるはずです。

MSDN ドキュメントから - 行ごとに 1 つのフィールドを持つテキスト ファイルでうまく機能するサンプルを次に示します。

BULK INSERT dbo.temp 
   FROM 'c:\temp\file.txt'
   WITH 
      (
         ROWTERMINATOR ='\n'
      )

私のテスト環境では問題なく動作しているようです:-)

于 2010-01-05T17:59:50.550 に答える
0

一度にファイルをテーブルに読み込みたい場合は、BULK INSERT を使用する必要があります。一方、ファイルを 1 行ずつ解析して独自のチェックを行う場合は、次の Web を参照してください: https://www.simple-talk.com/sql/t-sql-programming/reading -and-writing-files-in-sql-server-using-t-sql/ xp_cmdshell またはその他の OLE オートメーション機能を有効にする必要がある場合があります。Google で簡単に検索すると、スクリプトが表示されます。役に立つことを願っています。

于 2014-12-16T18:03:06.737 に答える