0

私の一括挿入クエリでは、.LST ファイルの列の 1 つを |12083121022612| として持っています。この列の形式は"YYMMDDHHMMSSTT"表のdbo.ReportMainとおりです。これにデータ型を設定datetime しました。

行 1、列 13 (DateAndTime) の一括読み込みデータ変換エラー (型の不一致または指定されたコードページの無効な文字)。

一括挿入コード:-

BULK
INSERT dbo.ReportMain
FROM 'C:\AGS_WINCORE_120901.LST'
WITH
(
FIELDTERMINATOR = '|',
ROWTERMINATOR = '0x0A'
)
GO
4

1 に答える 1

2

まあ、12083121022612有効な日付ではありません:

select cast('12083121022612' as datetime)
-->
Conversion failed when converting date and/or time from character string.

フィールドを使用するステージングテーブルに一括ロードできvarcharます。varcharフィールドをユニバーサルyyyy-MM-ddTHH:mm:ss:tt日付形式に変換できます。ステージングテーブルからメインテーブルに行を挿入できるクエリの例を次に示します。

insert  ReportMain
        (col1)
select  cast('20' + substring(col1,1,2) + '-' + substring(col1,3,2) + '-' + 
            substring(col1,5,2) + 'T' + substring(col1, 7,2) + ':' + 
            substring(col1, 9,2) + ':' + substring(col1, 11,2) + 
            '.' + substring(col1, 13,2) as datetime)
from    ReportMain_Staging

SQLフィドルでの例。

于 2012-09-08T11:04:37.407 に答える