【问题标题】:SQL Server Excel Worksheets ImportSQL Server Excel 工作表导入
【发布时间】:2015-12-05 18:15:41
【问题描述】:

我正在编写一个导入脚本,其想法是将多个工作簿导入到一个表中。我已经取得了进展,所以我能够成功地将一个工作簿导入我的表中。我想要做的是创建一个查询,该查询将循环读取文件名并将数据导入到我在 Microsoft SQL Server Management Studio 中的数据库中。

--Creating the TABLE--
CREATE TABLE BrewinDolphinHoldings
(
    recordID INT AUTO_NUMBER
    FUNDNAME VARCHAR(25),
    SEDOL VARCHAR(7),
    ISIN VARCHAR(11),
    NAME VARCHAR(20),
    WEIGHT INTEGER(3)
)

constraint[pk_recordID]PRIMARYKEY
(
    [recordID] ASC
)

INSERT INTO BrewinDolphinHoldings
VALUES
("HoldingsData', GB125451241, DavidsHoldings, 22)

--SELECTING THE SHEET--

SELECT/UPDATE? * 
FROM OPENROWSET('Microsoft.JET.OLEDB.4.0',
                'Excel 8.0;Database=X:\CC\sql\DEMO\SpreadsheetName + '.xlsx',
                'SELECT * FROM [Sheet1$]') AS HoldingsData

所以基本上我的问题是,我想创建一个循环,该循环将读取目录中的文件名,并且每次循环并导入相关电子表格时,导入都会读取该名称?所以,例如:

DECLARE SpreadsheetName as STRING 
DECLARE FileExtension as '.xlsx'

FOR EACH ITEM IN DIRECTORY
X=1
Y=MAX
FILENAME THAT LOOP READS = SpreadsheetName
SELECT * FROM
OPENROWSET('Microsoft.JET.OLEDB.12.0',
'Excel 8.0;Database=X:\CC\sql\DEMO\SpreadsheetName + fileExtension.xls
END LOOP

所以,我在想也许是这样的?虽然我不知道循环是否会覆盖我的数据库?也许我应该使用 INSERT 而不是 UPDATE? 我不想使用 SSIS,最好是查询,但如果有人可以推荐我可以研究的任何内容,或者帮助我完成这个循环,这将有很大帮助

我对你们的新想法持开放态度,因此,如果有人可以尝试修复我的代码,或者给我一些导入多个 Excel 工作表的示例,将不胜感激!

我是 SQL Server 的新手,我确实有一些以前的编程经验!

谢谢!

【问题讨论】:

    标签: sql-server database excel loops import


    【解决方案1】:

    您可以使用 bcp 来导入任何类型的分隔文本文件,例如 csv 或文本制表符分隔。如果可以将电子表格生成/保存为 csv 并使用此方法。请参阅这些链接。

    Import Multiple CSV Files to SQL Server from a Folder

    http://www.databasejournal.com/features/mssql/article.php/3325701/Import-multiple-Files-to-SQL-Server-using-T-SQL.htm

    如果它必须是 excel,那么您不能使用 bcp,但是这些应该仍然可以帮助您了解文件夹上循环的逻辑。我以前从未使用过 excel openrowset,但如果你让它像你说的那样工作,它应该能够插入相同的内容。您仍然可以使用 xp_cmdshell/xp_dirtree 查看文件并生成路径,即使您无法使用 bcp 导入它。

    How to list files inside a folder with SQL Server

    然后我会说,从 openrowset 的 select 语句中进行插入以将其放入表中是最简单的。

    http://www.w3schools.com/sql/sql_insert_into_select.asp

    确保在您的 sql server 实例上也启用了 xp_cmdshell。

    https://msdn.microsoft.com/en-us/library/ms190693(v=sql.110).aspx

    【讨论】:

    • 很好,我会调查的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多