mysql - 无法使用 R 脚本将 mysql 数据表写入 csv 文件
问题描述
在这里,我使用以下 R 外部脚本编写 sql 数据库 tableas csv 文件。
我知道如何使用导出和导入向导导出数据。
但我必须使用脚本导出数据。
declare @file_path varchar(300)
select @file_path = 'C:/NB/DATA/DB/arima.csv'
EXEC sp_execute_external_script
@language = N'R'
,@script = N'
write.csv(data,file=file_path,row.names=FALSE);'
,@input_data_1_name = N'data'
,@input_data_1= N'select * from [dbo].[fcst_model]'
,@params = N'@file_path varchar(300)'
,@file_path = @file_path;
笔记:
- fcst_model 是数据库表
- 它有两列
执行脚本时出现以下错误。
Msg 39004, Level 16, State 20, Line 305
A 'R' script error occurred during execution of 'sp_execute_external_script'
with HRESULT 0x80004004.
Msg 39019, Level 16, State 2, Line 305
An external script error occurred:
Error in file(file, ifelse(append, "a", "w")) :
cannot open the connection
Calls: source ... write.csv -> eval.parent -> eval -> eval -> write.table ->
file
In addition: Warning message:
In file(file, ifelse(append, "a", "w")) :
cannot open file 'C:/NB/DATA/DB/arima.csv': Permission denied
谁能帮我解决这个问题。
提前致谢。
解决方案
drop proc if exists to_csv;
go
create proc to_csv(@param1 varchar(MAX))
as
begin
exec sp_execute_external_script
@language = N'R'
,@script = N'
write.csv(df,output_path)'
,@input_data_1 = N'select * from fcst_data1'
,@input_data_1_name=N'df'
,@params = N'@output_path varchar(MAX) '
,@output_path = @param1;
end;
go
exec to_csv "C:\\NB\\DB\\SQL_R\\data\\data.csv"
推荐阅读
- python - Tensorflow 1.15-IOError:[Errno 32] 断管
- angular - 如何在 Fullcalendar 5 中动态更改 snapDuration
- c# - 我应该使用哪种类型的库在 C# 中进行 Socket 编程?
- python - 在 Django 中,仅生成 s3 客户端 generate_presigned_post,内容类型为 mp4 文件上传
- gatling - 在 Gatling 中,我们可以在自定义错误消息中插入变量吗
- numbers - WinAppDriver / AZERTY 键盘:sendkeys() 未正确发送数字
- python - Python GUI 弹出窗口
- azure-devops - 如何从 Azure DevOps 构建中获取已发布工件的列表
- r - 如何找到每个矩阵行的第一个值等于或大于预定义值的位置?
- c# - 通过 SendMessage 发送鼠标消息时如何避免关注窗口?