配置 SQL 服务器数据类型的最快方法是什么?

What's the quickest way to configure SQL Sever data types?

我经常需要在 SQL 服务器中导入大型 tables,其中包含数十个(有时超过 100 个)列,它们的数据类型遍布各处(通常存储为需要转换的字符串).

我目前的方法是查看值的样本,确定最佳数据类型,然后使用以下方法更改列数据类型:

ALTER TABLE staff_mx ALTER COLUMN [First Name] varchar(50) 
ALTER TABLE staff_mx ALTER COLUMN [Preferred Name] varchar(50) 
ALTER TABLE staff_mx ALTER COLUMN [Middle Names] varchar(50)
ALTER TABLE staff_mx ALTER COLUMN [Last Name] varchar(50) 

然而,当我每次 table 这样做 50 到 100 次时,我开​​始思考是否有更好的方法来做到这一点?

我正在使用导入向导加载平面文件,如果我在那里指定数据类型,它经常会给我一个错误(通常是一种奇怪的日期格式,它无法识别,需要在存储之前进行预操作作为约会)。由于管理员设置了我的用户配置(他们不会更改它),因此无法选择批量插入。

可能不是更快的方法,但我想问一下。谢谢!

不要更改 table。将数据加载到暂存 table,然后对最终 table:

执行所需的转换
select convert(varchar(50), [First Name]) as firstName,
       convert(varchar(50), [Preferred Name]) as preferredName,
       . . . 
into real_table
from staging;

如果需要,这使您有机会进行更复杂的转换。您还可以修复暂存数据中的列名称。

您还可以预先定义 table 并直接批量加载到 table。但是,这不会让您有机会在必要时修复数据。