0

我有一个管道分隔的文件太大而无法在 Excel 中打开。我正在尝试使用 SSMS 中的导入向导将此文件导入 MSSQL。

通常,当我这样做时,我在 Excel 中打开文件并使用数组函数 =MAX(LEN(An:Annnn)) 来获取每列的最大长度。然后我用它来指定表中每个字段的大小。

该文件太大而无法在 Excel 中打开,并且 SQL 不会检查所有数据以给出准确的建议(我认为这是一个疯狂的小样本,例如 200 条记录)。

任何人都有解决方案(我不反对在 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 回答