- PR -

bcpでテキスト型の入出力

1
投稿者投稿内容
MOR
会議室デビュー日: 2006/04/18
投稿数: 5
お住まい・勤務地: 茨城県
投稿日時: 2006-07-19 17:31
現在開発中のシステムでテスト環境で使用しているデータを、
客先に持って行き使用する為にbcpでの入出力をしています。

テキスト型のフィールドではうまく動作しないしません。
やっている内容は、出力→データ削除→入力の順で行います。
入力時にエラーがあるので、困っています。
エラーの内容は
SQLState = 22003, NativeError = 0
Error = [Microsoft][ODBC SQL Server Driver]数値が範囲を超えています。
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC SQL Server Driver]Text 行のデータが不完全です。

テーブルの内容は以下のとおりです。
[ID] [numeric](4, 0) NOT NULL
[タイトル] [varchar] (80) NOT NULL
[text1] [text] NULL
[text2] [text] NULL
[text3] [text] NULL
[text4] [text] NULL

フォーマットファイルは
8.0
6
1 SYBCHAR 0 19 ",¥"" 1 ID ""
2 SYBCHAR 0 80 "¥",¥"" 2 タイトル ""
3 SQLTINYINT 0 8000 "¥",¥"" 3 text1 Japanese_CS_AS_KS_WS
4 SQLTINYINT 0 8000 "¥",¥"" 4 text2 Japanese_CS_AS_KS_WS
5 SQLTINYINT 0 8000 "¥",¥"" 5 text3 Japanese_CS_AS_KS_WS
6 SQLTINYINT 0 8000 "¥"¥r¥n" 6 text4 Japanese_CS_AS_KS_WS

コマンドラインは
bcp [DBName].[OwnerName].[TableName] out .¥out.txt -f ..¥format.fmt -U userName -P pass
bcp [DBName].[OwnerName].[TableName] in .¥out.txt -f ..¥format.fmt -U userName -P pass

以上ですアドバイスよろしくお願いします。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-07-20 01:59
引用:

MORさんの書き込み (2006-07-19 17:31) より:

テーブルの内容は以下のとおりです。
[ID] [numeric](4, 0) NOT NULL
[タイトル] [varchar] (80) NOT NULL
[text1] [text] NULL
[text2] [text] NULL
[text3] [text] NULL
[text4] [text] NULL

フォーマットファイルは
8.0
6
1 SYBCHAR 0 19 ",¥"" 1 ID ""
2 SYBCHAR 0 80 "¥",¥"" 2 タイトル ""
3 SQLTINYINT 0 8000 "¥",¥"" 3 text1 Japanese_CS_AS_KS_WS
4 SQLTINYINT 0 8000 "¥",¥"" 4 text2 Japanese_CS_AS_KS_WS
5 SQLTINYINT 0 8000 "¥",¥"" 5 text3 Japanese_CS_AS_KS_WS
6 SQLTINYINT 0 8000 "¥"¥r¥n" 6 text4 Japanese_CS_AS_KS_WS


すみません、素朴な疑問なんですが、何で3〜6のストレージ型はSQLTINYINTなんですか?
TEXT型ならSQLCHARでいいかと思ったんですが。
#参照 「bcp を使用したファイル ストレージ型の指定」
http://msdn2.microsoft.com/ja-jp/library/ms189110.aspx

同じテーブルを作成し、ためしにフォーマットを出してみたら
TEXT型に対してはSQLCHARで出ましたよ。
_________________
夏椰 @ わんくま同盟
夏椰の庵
Microsoft MVP for Windows Server System - SQL Server ( Jul 2006 - Jun 2008 )
MOR
会議室デビュー日: 2006/04/18
投稿数: 5
お住まい・勤務地: 茨城県
投稿日時: 2006-07-20 08:46
出来ました、ありがとう御座います。
問題はフォーマットの指定だったようです。
ご指摘どうりSQLTINYINTをSQLCHARに直したらうまくいきました。

SQLTINYINTにした理由はSYBCHARでうまくいかなかったので、bcpに出力が指定したフォーマットでやらないと、駄目なのか?と思い指定しました。
1

スキルアップ/キャリアアップ(JOB@IT)