我正在尝试从特定文件导入特定信息并放在工作簿中。
让:
" Bluelake.xlsm"将是文件名(工作簿) "时间"将是工作表 这些信息在表格中" C3"到" C8"。
sql表的参数是:
TableName:processStatus
列:processStatus,其值为:varchar(32)/ any string
我的问题:
我知道"插入":
的书卷示例INSERT INTO table_name(column1,column2,column3,...)VALUES(value1,value2,value3,...);
,不幸的是我不知道如何扩展它。
提前谢谢你。
答案 0 :(得分:0)
INSERT INTO processStatus (processStatus1, processStatus2, processStatus3
,processStatus4, processStatus5, processStatus6)
SELECT (C3, C4, C5, C6, C7, C8)
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=YES;Database=Bluelake.xlsx',
'select * from [Time$]');
注意:如果您在Excel工作表中确实有命名列,则需要在此处替换它们。
并且您没有提供processStatus表的列名,因此我将其替换为您还需要在代码中替换的通用名称。
您的“数据库”必须是Excel文件的完全限定文件路径。
最后,如果您确实需要更改数据类型,则需要对每列进行CAST。例如:
CAST(C3 AS VARCHAR(32))
希望这有帮助!
编辑:另外一件事,您可能需要为XLSX使用不同的OLEDB驱动程序。如果它是一个简单的电子表格,可能更容易从Excel中保存为旧格式(XLS)。或者您可以更进一步,使用SQL导入向导将Excel数据放入表中,然后您的INSERT INTO语句更加简化,因为您只需从表中选择而不是使用OPENROWSET来查询Excel文件。