sqlserver:插入数据的设计方法

sqlserver:插入数据的设计方法,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有一个员工表,上面有员工id、地址、联系电话和雇佣信息等详细信息 我试图在一些不同的表中加载上述数据,但限制是每个字段都可以通过固定长度的文件加载 例如: 对于仅加载地址字段 **Field Position** EID 1-4 Company 5-8 Address1 9-40 Address2 41-99 Status 100 用于加载电话号码 EID 1-4 Company 5-8 phone 19-30 Landline 31-44 other 45-70 Status 100 对

我有一个员工表,上面有员工id、地址、联系电话和雇佣信息等详细信息

我试图在一些不同的表中加载上述数据,但限制是每个字段都可以通过固定长度的文件加载

例如:

对于仅加载地址字段

**Field Position**
EID 1-4
Company 5-8
Address1 9-40
Address2 41-99
Status 100
用于加载电话号码

EID 1-4
Company 5-8
phone 19-30
Landline 31-44
other 45-70
Status 100
对于每个字段,我们有大约40个固定长度的文件结构

你能建议一个我遵循的方法使它更通用吗


谢谢

如果您要将平面文件导入SQL Server,您可以使用SS的BCP进程大容量插入数据。您还可以为BCP提供一个格式文件,在该文件中可以定义固定长度规范(只需执行一次),然后将其应用于向前的批量插入

以下是有关导入批量数据和使用格式文件的Microsoft文档的链接:


我相信这可能就是您想要的。

您不太可能创建通用解决方案,只需编写insert语句并指定哪个源列将指向哪个目标列。谢谢@tanner。如果我直接通过insert语句进行操作,我必须生成40个结构。此外,我必须在插入之前进行验证。例如,地址1不应包含特殊符号。您可以向目标表添加检查约束然后处理违规的异常。是否从文件导入此数据?如果表中已有数据,为什么要通过固定宽度的文件进行插入?为什么不能简单地使用insert语句呢?
BULK INSERT dbo.myFirstImport   
   FROM 'D:\BCP\myFirstImport.bcp'   
   WITH (FORMATFILE = 'D:\BCP\myFirstImport.xml');  
GO