我对编写 SQL 脚本还是很陌生。我有一个脚本可以导入大量的 excel 文件(可能达到 1000+)。有些 Excel 电子表格只有一行,有些则超过 50 行。我将所有这些 excel 电子表格导入到一个表中,并希望能够添加一列,该列通过文件名标识记录来自哪个 Excel 电子表格。因此,第 1 到第 10 行可能来自 ExcelSpreadsheetA.xlsx,第 11 到第 15 行可能来自 ExcelSpreadsheetB.xlsx。我可以在导入过程中设置此标识吗?
我使用此脚本从 excel 执行导入:
select *
into SQLServerTable
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=D:\testing.xls;HDR=YES',
'SELECT * FROM [Sheet1$]')
我想做的是在该脚本的末尾添加逻辑,内容如下:
update sqlservertable
set filename = testing.xls
但我希望它仅为从该特定文件名导入的记录设置文件名属性。理想情况下,我希望决赛桌看起来与下面的类似。
Col1 Col2 Col3 Filename
===== ===== ===== =========
1 A B export1.xlsx
2 C D export1.xlsx
3 E F export1.xlsx
4 G H export5.xlsx
5 I J export8.xlsx
6 K L export8.xlsx
@Pondlife 这个脚本做我想做的事。
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$]')