拥有以下代码,如何将外部python脚本中的值输出到我可以查询的sql表中。
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
import pandas as pd
import numpy as np
rd = np.random.randn(100)
df = pd.DataFrame(rd).describe()
print(df)'
提前致谢。
答案 0 :(得分:3)
的确,正如R版本所示,请考虑INSERT INTO myTable ...
使用TSQL中Python执行脚本的结果,指定 @output_data 。但是,首先创建要附加的表,相应地对齐列和类型。
此外,由于您使用describe()
,请考虑在输出之前重命名列。最后,默认情况下, pandas 包含在SQL Server 2016中的Python机器学习服务中,如tutorial中所述,因此无需导入(可能与numpy相同)。
DROP TABLE IF EXISTS myTable;
CREATE TABLE myTable (
[aggregate] varchar(50) NOT NULL,
[value] float NOT NULL
)
GO
INSERT INTO myTable
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'import numpy as np
rd = np.random.randn(100)
df = pandas.DataFrame(rd).describe().reset_index().rename(columns={"index":"aggregate", 0:"value"})',
@output_data_1_name = N'df';
GO
答案 1 :(得分:0)
declare @py nvarchar(max);
set @py = N'from pandas.io.json import json_normalize
rdd = {"documents": [{"id": "1", "score": 0.97},{"id": "2","score": 0.87},{"id": "3", "score": 0.78}],"errors": []}
print(type(rdd))
df = json_normalize(rdd, "documents")
print(df)
print(type(df))
';
drop table if exists apiresults
create table apiresults (id int, score float)
insert into apiresults
exec sp_execute_external_script
@language = N'Python',
@script = @py,
@output_data_1_name =N'df'
select * from apiresults