我有一些我想批量插入的列(450列)的大文件(aprox。50.000行),但事实是,我只想220个被插入。有什么办法可以在不使用一些后端处理的情况下使用SQL执行此操作?
文件看起来像这个
123434|s2231|1|||0|inet|20150511123344|...........1233123|12|0
以及我的数据库中的star_date
字段是datetime
,在我的.csv中,日期像 20150511123344
(yyymmmddhhmmss格式)是什么是插入此插入而无需预处理的最佳方法(2015-05-11 12:33:44)?
非常感谢
您可以使用openrowset bulk rowset提供商。
这是链接中的示例:
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生成格式文件,假设您可以访问服务器和表,则可以从。
生成BCP文件。示例命令行生成本机数据类型的格式文件:
bcp AdventureWorks2012.HumanResources.Department format nul -T -n -f Department-n.fmt
创建了格式文件后,您可以打开文件以查看列名,然后为Select语句构建列列表。