sql自定义批量插入

时间:2015-05-14 07:31:56

标签: sql sql-server

我有一些大文件(aprox。50.000行),有很多列(450列),我想批量插入,但问题是我只想插入220个。有没有办法用sql做这个而不使用一些后端处理?

文件看起来像这样

123434|s2231|1|||0|inet|20150511123344|...........1233123|12|0

并且我的数据库中的star_date字段也是datetime,而在我的.csv中,日期就像这样20150511123344(YYYYmmmddHHmmss格式)在没有预处理的情况下插入它的最佳方法是什么(2015-05-11 12:33:44)?

非常感谢

1 个答案:

答案 0 :(得分:2)

您可以使用OPENROWSET Bulk Rowset provider

以下是链接中的示例:

USE AdventureWorks2012;
DELETE myTestFormatFiles;
GO
INSERT INTO myTestFormatFiles
  SELECT *
  FROM  OPENROWSET(BULK  'C:\myTestFormatFiles-c.Dat',
  FORMATFILE='C:\myTestFormatFiles.Xml'     
  ) as t1 ;
GO
SELECT * FROM myTestFormatFiles;
GO

在您的情况下,您将替换"选择*"列列表。您可能需要也可能不需要格式文件,我会首先尝试不使用它。

鉴于该表有400多列,您可以使用bcp.exe generate a format file,假设您可以访问生成bcp文件的服务器和表。

示例命令行,用于为本机数据类型生成格式文件:

bcp AdventureWorks2012.HumanResources.Department format nul -T -n -f Department-n.fmt

创建格式文件后,您可以打开文件以查看列名,然后为SELECT语句构建列列表。