有没有人知道如何在SQL管理工作室中将CSV文件导出到FTP站点? 我目前正在使用 exec xp_cmdshell' net use \ ftp://213.32.32 \ user:fjdowj ddfdf' 但它根本不起作用 感谢
答案 0 :(得分:0)
您可以尝试使用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;
}
}
生成文件后,您可以使用以下方法加载到FTP路径。 FTP Directly in SQL
答案 1 :(得分:-1)
xp_cmdshell
(出于很好的理由)。你可以手动重新启用它(我鼓励你不要),但是你需要一个ftp命令行工具来上传 - 我不认为net use
命令会这样做特技。如果您确实将ftp端点映射为具有net use
作为SQL Server服务用户的驱动器,则在运行FTP作业之前,您仍需要实现将文件从SSMS复制到服务器上的文件系统。 / p>