Sql server 在Excel导入到SQL Server表期间添加列

Sql server 在Excel导入到SQL Server表期间添加列,sql-server,tsql,excel-2010,import-from-excel,Sql Server,Tsql,Excel 2010,Import From Excel,我有一个脚本,可以创建一个表和一个列来跟踪负责导入的文件名 select *, 'file1.xls' as 'Filename' into dbo.SQLServerTable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;HDR=YES','SELECT * FROM [Sheet1$]') 然后,我需要执行具有不同文件名的其他导入。我不相信这句话在语法上是正确的,它阻止了导入

我有一个脚本,可以创建一个表和一个列来跟踪负责导入的文件名

select *, 'file1.xls' as 'Filename'
into dbo.SQLServerTable 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;HDR=YES','SELECT * FROM [Sheet1$]')
然后,我需要执行具有不同文件名的其他导入。我不相信这句话在语法上是正确的,它阻止了导入

INSERT INTO dbo.SQLServerTable 
Select *, 'File2.xlsx' as 'FileName' 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel      12.0;Database=D:\Convert\Converted\File2.xlsx;HDR=YES', 'SELECT * FROM [Worksheet$]')

我遇到了这个问题,这是因为默认的表值,对于字符串值,这可能是一个varchar(50),其中我需要一个varchar(120)


我的解决方案是将excel放入csv文件(标准保存在excel中),然后使用sql导入/导出UI将文件导入到表中。在此过程中,您可以查看所有默认值,然后通过“高级”选项卡将这些值更改为您自己的首选项。

是否收到错误消息?如果是,是哪一个?我得到的错误是“字符串或二进制数据将被截断”您事先知道哪些列正在从Excel文件中编译吗?我相信发生了什么-首先
SELECT INTO
创建一个具有特定VARCHAR长度的列的表。导入第二个文件时,该文件中的某些数据超过该长度。您可以尝试使用VARCHAR(max)列预先创建表,或者尝试将注册表选项
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel\TypeGuessRows
设置为0,以便Excel根据整个列而不仅仅是前8行猜测列类型您总是有109列吗?然后,您应该真正花时间创建一个包含109列(大小足以阻止截断错误)的表,再加上一个包含国家名称的附加列。那么你只需要担心一张桌子。