【发布时间】:2020-07-14 12:02:47
【问题描述】:
我经常需要在 SQL Server 中导入大型表,其中有几十个(有时 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)
但是,当我每次每张桌子都这样做 50 到 100 次之间时,我开始认为有更好的方法吗?
我正在使用导入向导加载平面文件,如果我在那里指定数据类型,这通常会给我一个错误(通常是一种奇怪的日期格式,它无法识别,需要预先操作才能将其存储为日期)。由于管理员设置了我的用户配置,因此批量插入不是一个选项(他们不会更改它)。
可能不是更快的方法,但我想我会问。谢谢!
【问题讨论】:
-
SSIS 以及大多数 ETL 工具也可以提供帮助。当您使用该工具创建目标表时,SSIS 会建议数据类型。它们并不总是准确无误,但它做得非常好,并且可以节省您在简单的事情上的时间。
标签: sql sql-server tsql import sqldatatypes