質問

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

残念ながら、スプレッドシートの列には、dd / MM / yyyy(Excelの「一般」形式)の文字列として保存された日付と、Excelの「Date」形式のdd / MM / yyyy(ロケール) 「英語(イギリス)」)。

これは単なる方法であり、ユーザーが自分でこれを整理できるとは期待できません。

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

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

問題は、スプレッドシートに保存されている日付書式を使用する日付がMM / dd / yyyyとしてSQL Serverにインポートされ、文字列として保存されている日付がdd / MM / yyyyとしてインポートされることです。接続文字列にIMEX = 1があります。

同じvarchar列で両方の形式を使用して日付を設定すると、datetime列に配置しようとすると明らかに問題が発生します

SET DATEFORMAT MDY;    
SET DATEFORMAT DMY;

役に立たない。

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

SSISパッケージに日付をdd / MM / yyyyとしてインポートするよう強制する方法はありますか?日付のこの組み合わせを文字列として適用し、日付書式が適用されたセル

その他のアイデア?!

どうもありがとう、

アンソニー

役に立ちましたか?

解決

あなたはあなた自身の質問に答えたと思います。日付形式のセルのインポートは日付として処理され、その他は文字列として処理されます。おそらく、SQLサーバーの日付設定はMM / dd / yyyyであるため、変換されます。

SSISパッケージにデータ変換ステップを追加して、列のすべてを日付時刻または文字列の単一形式に変換してみませんか。そうすれば、SQLサーバーがそれらすべてを同じ方法で処理するはずです。

Raj

他のヒント

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

したがって、次のようになります。

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Folder1\Book1.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top