0

CSVファイルを作成するJavaコードがあり、SQLサーバーの「BULK INSERT」を使用してデータをデータベースに挿入します。フォーマットファイルがありません。SQL サーバーは 2008 です。

単体テストを介してコードを実行し、次の SQL コードを実行すると、すべて正常に動作し、データがテーブルに挿入されます。

declare
@csvFileName VARCHAR (1024)= 'file.csv',
@csvFormatFileName VARCHAR (1024)= null,
@tableName VARCHAR (256) = 'tableName';

EXECUTE (       
'BULK INSERT '+ @tableName +' FROM ''' + @csvFileName + ''' WITH 
(FIRSTROW=2, FIELDTERMINATOR=''\t'', ROWTERMINATOR=''\n'', MAXERRORS=0);');

私の Java コードが実稼働環境で実行され、CSV ファイルが作成されるときに、作成された CSV ファイルの 1 つを取得して上記の SQL を実行すると、エラーは発生しませんが、テーブルにデータが挿入されず、次のようになります。

(0 row(s) affected)

問題を引き起こすのは本番DBサーバーと開発DBサーバーであると最初に考えましたが、そうではありませんでした。

これは、CSV ファイルのサンプル データです。

ID  Date    number1 number2 number3

88  2013-01-14  2   0   0.00

64  2013-01-14  0   0   0.00

差額の賭けは見られません。問題なく動作するCSVファイルとそうでないCSVファイル!結局、それらは同じ Java コードで作成されます。

タブ、改行などを使用して、ファイルの内容をそのまま表示できるエディターはありますか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

各行の最後にCRLFを追加するWindowsで作成された私のマシン上のもの。LFのみを追加するUinxで作成された本番環境のもの。解決策は、任意のプラットフォームで動作するMS SQLServerbcpユーティリティによって作成されたフォーマットファイルを使用することです。

于 2013-02-21T18:34:14.120 に答える