sql-server - Excel 如何使用 Transact SQL 从 SQL Server 导入数据

标签 sql-server excel tsql import

我想使用 TSQL 将 SQL 服务器数据导入 Excel。在 Excel 中,我可以完美地检索带有 SQL 代码的表。但是当我编写 TSQL 代码而不是 SQL 时,它给了我“没有什么可检索的”。

Excel 是否支持 TSQL 代码?如果是这样,我如何将数据从 SQL Server 导入到 Excel 中?

我有这个示例代码顺便说一句。

use GOPLUS;
DECLARE @kayitNo INT;
DECLARE @CardRefOfItem INT;
DECLARE @CardRefOfPrice INT;
DECLARE @urunKodu VARCHAR(100);
DECLARE @urunAdi VARCHAR(100);
DECLARE @fiyat1 INT;
DECLARE @fiyat2 INT;
DECLARE @fiyat3 INT;
DECLARE @numb INT;
DECLARE @kayitSayisi INT = (SELECT COUNT(*) FROM LG_001_ITEMS);
DECLARE @sayac INT = 0;

CREATE TABLE #UrunListesis( 
Sira INT NOT NULL PRIMARY KEY,
Ürün_Kodu VARCHAR(100),
Ürün_Adı VARCHAR(100),
Fiyat1 INT,
Fiyat2 INT,
Fiyat3 INT
)
set @kayitNo = (SELECT TOP 1 LOGICALREF FROM LG_001_ITEMS ORDER BY LOGICALREF ASC)

WHILE @sayac < @kayitSayisi
BEGIN

    set @urunKodu = (SELECT LG_001_ITEMS.CODE FROM LG_001_ITEMS WHERE LG_001_ITEMS.LOGICALREF = @kayitNo)
    set @urunAdi = (SELECT LG_001_ITEMS.NAME FROM LG_001_ITEMS WHERE LG_001_ITEMS.LOGICALREF = @kayitNo)

    set @CardRefOfPrice = (SELECT TOP 1 LOGICALREF FROM LG_001_PRCLIST WHERE CARDREF = @kayitNo)

    set @numb = (SELECT COUNT(*) FROM LG_001_PRCLIST WHERE LG_001_PRCLIST.CARDREF = @kayitNo)
    if (@numb >=1) 
    begin
        set @fiyat1 = (SELECT LG_001_PRCLIST.PRICE FROM LG_001_PRCLIST WHERE LG_001_PRCLIST.LOGICALREF = @CardRefOfPrice)
    end
    if (@numb >=2)
    begin
    set @fiyat2 = (SELECT LG_001_PRCLIST.PRICE FROM LG_001_PRCLIST WHERE LG_001_PRCLIST.LOGICALREF = @CardRefOfPrice+1)
    end
    if (@numb =3)
    begin
    set @fiyat3 = (SELECT LG_001_PRCLIST.PRICE FROM LG_001_PRCLIST WHERE LG_001_PRCLIST.LOGICALREF = @CardRefOfPrice+2)
    end

    INSERT INTO #UrunListesis VALUES(@kayitNo,@urunKodu,@urunAdi,ISNULL(@fiyat1,0),ISNULL(@fiyat2,0),ISNULL(@fiyat3,0));
    set @kayitNo = @kayitNo+1;
    set @sayac = @sayac + 1
    set @fiyat1 = 0
    set @fiyat2 = 0
    set @fiyat3 = 0
END

SELECT * FROM #UrunListesis

很可能我只想将临时表 UrunListesis 返回到 Excel 就是这样。

最佳答案

另一种方式

您可以使用 xp_cmdshell 将 sql 导入到 xls 文件中,从而以这种格式插入表结构和数据:

<?xml version="1.0" standalone="yes"?>
<Columns>
<ColumnData Column1="asd" Column2="dsa" Column3="ads" />
<ColumnData Column1="asd1" Column2="dsa2" Column3="ads3" />
</Columns>

使用类似的东西
exec xp_cmdshell 'echo ^<?xml version="1.0" standalone="yes"?^> >>C:\file.xls'

您可以使用 tableName 参数创建一个过程,该过程将以最高格式格式化表和数据并返回一个输出变量。

关于sql-server - Excel 如何使用 Transact SQL 从 SQL Server 导入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27939659/

相关文章:

sql - 使用 T-SQL 删除列中的无关字符

sql - 根据当前日期和配置数据获取记录

vba - Excel SpecialCells(xlCellTypeBlanks) 合并单元格失败

sql - 这个存储过程是线程安全的吗? (或者 SQL Server 上的任何等效项)

excel - Swagger/OpenAPI 到人类可读文档(Excel、Word ...)的转换

linq - 将一个大数据表拆分为两个单独的数据表

sql - 从 SQL DATE 中仅获取月份和年份

excel - 使用 Raiserror : Is this possible? 将多步 ADO 查询的进度传递到 VBA

sql-server - 来自 Azure 网站的 Azure VM SQL Server Integrated Security

sql-server - 基于 "Group By"列运行 "Flip"序数计数器