【问题标题】:SQL Server stored procedure Python passed file pathSQL Server 存储过程 Python 传递的文件路径
【发布时间】:2021-09-10 21:19:51
【问题描述】:

我正在尝试将文件目录传递给 Python 脚本以处理内容。这是EXEC 语句,在我的代码下方是错误。它应该打开文件并进行一些处理。

EXEC ScrapeData 'F:\FinancialResearch\SEC\myEdgar\sec-edgar-filings\WIRE\10-Q\0001753926-20-000110\full-submission.txt'

DROP PROCEDURE IF EXISTS ScrapeData;
GO

CREATE PROCEDURE [dbo].[ScrapeData] 
    (@filepath varchar(300))
AS
BEGIN
    EXEC sp_execute_external_script
            @language = N'Python',
            @script = N'
import html2text
from bs4 import BeautifulSoup
import pyodbc
import re
import requests
import pandas as pd

with open(@filepath) as f:
        contents = f.read()
        soup = BeautifulSoup(contents, ''lxml'')
.....

错误:

消息 39004,第 16 级,状态 20,第 0 行
执行“sp_execute_external_script”时出现“Python”脚本错误,HRESULT 为 0x80004004。

消息 39019,第 16 级,状态 2,第 0 行
发生外部脚本错误:

执行错误。检查输出以获取更多信息。

回溯(最近一次通话最后一次):
文件“”,第 3 行,在
文件“E:\ProgramData\REAPER\Temp-PY\Appcontainer1\DE944528-CBDA-4AFD-B50F-32AD2CFD35B7\sqlindb_0.py”,第 45 行
使用 open(@filepath) 作为 f:
^
SyntaxError: 无效语法

SqlSatelliteCall 错误:执行错误。检查输出以获取更多信息。

来自外部脚本的 STDOUT 消息:

SqlSatelliteCall 函数失败。有关详细信息,请参阅控制台输出。

【问题讨论】:

    标签: python sql-server stored-procedures


    【解决方案1】:

    ...对于文件 c:\temp\test.txt..

    declare @myfile varchar(100) = 'c:\temp\test.txt';
    
    EXEC sp_execute_external_script @language = N'Python', @script = N'
    print(filename)
    print(xyz)
    print(paramZ)
    num_lines = sum(1 for line in open(filename))
    print("------")
    print(num_lines)
    ',
    @params= N'@filename varchar(100), @paramZ int, @xyz varchar(10)', @filename = @myfile, @xyz='abcd', @paramZ = 100;
    

    【讨论】:

    • 谢谢!这很有帮助,很棒!
    • .. @DavidOlsen .. ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多