0

Excel で開くには大きすぎるパイプ区切りファイルがあります。SSMS のインポート ウィザードを使用して、このファイルを MSSQL にインポートしようとしています。

通常、これを行うときは、Excel でファイルを開き、配列関数 =MAX(LEN(An:Annnn)) を使用して各列の最大長を取得します。次に、それを使用してテーブルの各フィールドのサイズを指定します。

このファイルは大きすぎて Excel で開くことができず、SQL はすべてのデータをチェックして正確な提案を行うわけではありません (200 レコードのような非常に小さなサンプルだと思います)。

誰もがこれに対する解決策を持っています (特に Linux が無料の場合、Linux で何かをすることに反対しているわけではありません)。

助けてくれてありがとう。

4

1 に答える 1

0

テキスト データをデータベースにインポートする場合、通常、最初にデータをステージング テーブルに読み込みます。列は十分な長さの文字フィールド (たとえばvarchar(8000)) です。

次に、ステージング テーブルからファイナル テーブルに読み込みます。

create table RealTable (
    RealTableId int identity(1, 1) primary key,
    Column1 int,
    Column2 datetime,
    Column3 varchar(12),
    . . .
);

insert into RealTable(<all columns but id>)
    select (case when column1 not like '[^0-9]' then cast(column1 as int) end),
           (case when isdate(column2) = 1 then cast(column2 as datetime),
           . . .

データベースに挿入するときよりも、データベース内の型の問題をデバッグする方がはるかに簡単だと思います。

于 2013-07-06T01:47:04.220 に答える