26

サイズが 1.4 GB の .csv ファイルから大量のデータをデータベースにロードしようとしました。しかし、コードを実行しようとするとエラーが発生します。

これが私のコードです:

USE [Intradata NYSE] 
GO
CREATE TABLE CSVTest1
(Ticker varchar(10) NULL,
dateval date NULL,
timevale time(0) NULL,
Openval varchar(10) NULL,
Highval varchar(10) NULL,
Lowval varchar(10) NULL,
Closeval varchar(10) NULL,
Volume varchar(10) NULL
)
GO

BULK
INSERT CSVTest1
FROM 'c:\intramerge.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Check the content of the table.
SELECT *
FROM CSVTest1
GO
--Drop the table to clean up database.
DROP TABLE CSVTest1
GO

たくさんの株式相場でデータベースを構築しようとしています。しかし、次のエラー メッセージが表示されます。

メッセージ 4832、レベル 16、状態 1、行 2 バルク ロード: データ ファイルで予期しないファイルの終わりが検出されました。メッセージ 7399、レベル 16、状態 1、行 2 リンク サーバー "(null)" の OLE DB プロバイダー "BULK" がエラーを報告しました。プロバイダーは、エラーに関する情報を提供しませんでした。メッセージ 7330、レベル 16、状態 2、行 2 リンク サーバー "(null)" の OLE DB プロバイダー "BULK" から行をフェッチできません

私は SQL についてあまり理解していませんが、1 つまたは 2 つのことを理解したいと思っています。誰かが非常に明白なことを見てくれることを願っています。

4

15 に答える 15

18

古い質問を復活させますが、これが他の誰かに役立つ場合: 多くの試行錯誤の後、最終的に (最終的に!) これを変更することでこのエラーを取り除くことができました:

ROWTERMINATOR = '\n'

これに:

ROWTERMINATOR = '0x0A'
于 2015-11-13T22:40:28.217 に答える
15

私は同じ問題を抱えていました。

解決:

notepad+ などのテキスト エディターで CSV またはテキスト ファイルを確認します。最後の行が不完全な場合があります。それを除く。

于 2014-10-22T14:23:47.747 に答える
8

テーブルにある列とは異なる数の区切られたフィールドが CSV にある場合、同じエラーが発生しました。に適切な数のフィールドがあるかどうかを確認しますintramerge.csv

問題のある行を特定する方法:

  1. スプレッドシートで CSV を開き、すべてのデータにフィルターを追加して、空の値を探します

ここに画像の説明を入力

そして、ここに列の少ない行があります ここに画像の説明を入力

  1. このページhttps://csvlint.comを使用して検証ルールを作成すると、CSV の問題も検出できます。

ここに画像の説明を入力

于 2013-05-22T20:17:51.097 に答える
3

フォーマット ファイル (つまり、FORMATFILEparam を使用して指定) の列幅が実際の列サイズよりも小さい場合 (例:varchar(50)ではなくvarchar(100))、このエラーが発生しました。

于 2015-11-24T15:34:38.653 に答える
1

SQL テーブルの char フィールドが入力テキストに対して小さすぎる場合に、この例外が発生しました。列を大きくしてみてください。

于 2016-09-05T09:25:04.757 に答える
0

これに対する私の解決策を共有したいだけです。問題はテーブル列のサイズでした。varchar(255) を使用すると、すべてが機能するはずです。

于 2018-06-22T12:38:30.037 に答える
0

ファイルを調べて、ファイルの末尾に特殊文字やスペースがある場合は、削除してからやり直してください。

于 2021-09-27T06:21:53.197 に答える