2009-06-25 18 views
3

Excel 2003のスプレッドシートから日付の列をSSISを使用してSQL Server 2005にインポートしようとしています。私は英国にいるので、日付をdd/MM/yyyyの形式にしたい。SSISをSQL Serverに使用する日付形式の問題

残念ながら、スプレッドシートの列には、dd/MM/yyyy(Excel '一般'形式)の文字列と、Excelの '日付'形式のdd/MM/yyyyロケール '英語(英国)')。

これはまさにそれであり、私はユーザーがこれを自分自身で整理できるとは思っていません。

スプレッドシートを見ると、すべての日付が視覚的に正しく表示されます(例:dd/MM/yyyy)。

データベースの保持テーブルのvarcharカラムに値をインポートしようとしています。次に、これらの値をdatetime列を含む適切なテーブルにコピーするストアドプロシージャを実行します。

問題は、スプレッドシートに格納され、日付書式を使用する日付がSQL ServerにMM/dd/yyyyとしてインポートされ、文字列として格納された日付がdd/MM/yyyyとしてインポートされることです。接続文字列にIMEX = 1があります。私はdatetime型の列に入れしようとすると、同じvarchar列に両方のフォーマットを使用して日付は明らかに

SET DATEFORMAT MDY;  
SET DATEFORMAT DMY; 

したがって、問題を引き起こしている持つ

は役に立ちません。

SSISパッケージがExcelスプレッドシートの一見正しい日付をMM/dd/yyyyとしてSQL Serverにインポートする理由を知っている人はいますか?

SSISパッケージに、この日付の組合せを文字列として使用し、日付書式設定を適用したセルとして機能するdd/MM/yyyyとして日付をインポートするように強制しますか?

他のアイデアですか?

多くのおかげで、

アンソニー

答えて

2

私はあなたがあなた自身の質問に答えたと思います。日付形式のセルのインポートは、日付として扱われ、その他は文字列として扱われます。おそらくあなたはSQLサーバーの日付の設定はMM/DD/YYYYなので、変換します。

SSISパッケージにデータ変換手順を追加し、その列のすべてをdatetimeまたは文字列の単一の形式に変換してみてください。それから私はSQLサーバがそれらのすべてを同じように扱うことを確信しています。私の仕事は何

ラジ

1

は、Excel接続文字列にIMEX=1を追加することでした。

だから、次のようになります。

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Folder1\Book1.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1"; 
関連する問題