Sql server 使用SQL将CSV文件导出到FTP站点
有人知道如何将CSV文件导出到SQL management studio中的FTP站点吗? 我目前正在使用 exec xp_cmdshell“网络使用\\用户:fjdowj ddfdf” 但它根本不起作用Sql server 使用SQL将CSV文件导出到FTP站点,sql-server,Sql Server,有人知道如何将CSV文件导出到SQL management studio中的FTP站点吗? 我目前正在使用 exec xp_cmdshell“网络使用\\用户:fjdowj ddfdf” 但它根本不起作用 谢谢xp\u cmdshell在所有最新版本的SQL Server上默认禁用(原因非常充分)。您可以手动重新启用它(我建议您不要这样做),但是您需要一个ftp命令行工具来完成上传——我认为netuse命令不会起作用。如果您确实以SQL Server服务用户身份将ftp端点映射为驱动器net u
谢谢
xp\u cmdshell
在所有最新版本的SQL Server上默认禁用(原因非常充分)。您可以手动重新启用它(我建议您不要这样做),但是您需要一个ftp命令行工具来完成上传——我认为netuse
命令不会起作用。如果您确实以SQL Server服务用户身份将ftp端点映射为驱动器net use
,则在运行ftp作业之前,您仍然需要将文件从SSMS复制到服务器上的文件系统。您可以尝试使用CLR存储过程生成CSV文件并导出到ftp站点
生成CSV文件的路径如下所示:
public static void GenerateCSVFile(SqlString queryToGetData, SqlString folderPath)
{
string sqlCommand;
string filePath;
try
{
sqlCommand = queryToGetData.ToString();
filePath = folderPath.ToString() + "\\GeneratedFile" + ".csv";
using (SqlConnection connection = new SqlConnection(
"context connection=true"))
{
connection.Open();
SqlCommand command = new SqlCommand(sqlCommand,connection);
using (SqlDataReader reader = command.ExecuteReader())
{
DataTable table = new DataTable();
table.Load(reader);
StringBuilder builder = new StringBuilder();
List<string> columnNames = new List<string>();
List<string> rows = new List<string>();
foreach (DataColumn column in table.Columns)
{
columnNames.Add(column.ColumnName);
}
builder.Append(string.Join(",", columnNames.ToArray())).Append("\n");
foreach (DataRow row in table.Rows)
{
List<string> currentRow = new List<string>();
foreach (DataColumn column in table.Columns)
{
object item = row[column];
currentRow.Add(item.ToString());
}
rows.Add(string.Join(",", currentRow.ToArray()));
}
builder.Append(string.Join("\n", rows.ToArray()));
using (StreamWriter writer = new StreamWriter(filePath))
{
writer.Write(builder.ToString());
}
}
}
}
catch(Exception ex)
{
throw;
}
}
public静态void GenerateCSVFile(SqlString queryToGetData,SqlString folderPath)
{
字符串sqlCommand;
字符串文件路径;
尝试
{
sqlCommand=queryToGetData.ToString();
filePath=folderPath.ToString()+“\\GeneratedFile”+“.csv”;
使用(SqlConnection=newsqlconnection)(
“上下文连接=true”))
{
connection.Open();
SqlCommand=newsqlcommand(SqlCommand,connection);
使用(SqlDataReader=command.ExecuteReader())
{
DataTable=新的DataTable();
表1.负载(读卡器);
StringBuilder=新的StringBuilder();
List columnNames=新列表();
列表行=新列表();
foreach(table.Columns中的DataColumn列)
{
columnNames.Add(column.ColumnName);
}
Append(string.Join(“,”,columnNames.ToArray()).Append(“\n”);
foreach(table.Rows中的DataRow行)
{
List currentRow=新列表();
foreach(table.Columns中的DataColumn列)
{
对象项=行[列];
currentRow.Add(item.ToString());
}
Add(string.Join(“,”,currentRow.ToArray());
}
Append(string.Join(“\n”,rows.ToArray());
使用(StreamWriter=新StreamWriter(文件路径))
{
writer.Write(builder.ToString());
}
}
}
}
捕获(例外情况除外)
{
投掷;
}
}
生成文件后,可以使用以下方法加载到FTP路径。
你说的根本不工作到底是什么意思?首先,213.32.32不是一个有效的IP地址。谢谢您的提问。SQL查询不起作用。真的很抱歉,我伪造了IP地址。但我测试了真正的FTP站点。它工作得很好。我可以上传或删除文件。我只是无法将CSV文件导出到ftp站点。我有一个SQL作业,每天执行SQL查询,并将csv文件导出到ftp站点。现在的问题是,我不知道如何建立到SQLFTP站点的连接。谢谢你的回答。我能够生成CSV文件,但在将CSV文件传输到FTP站点时遇到问题。我在SQL文章中直接阅读了您的FTP。我对此有一些问题。我不确定开始的步骤。可以告诉我更多关于它的信息吗?例如,如何创建一个可视化经典库?我也很好奇,在SQL中有没有其他方法可以连接到FTP站点?非常感谢你的回答。我没有在SQL中使用net use映射fit站点。这真是我的问题。如果您有任何想法连接到SQL中的FTP站点,以便我可以将CSV文件导出到FTP站点,我将不胜感激。