Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用SQL将CSV文件导出到FTP站点_Sql Server - Fatal编程技术网

Sql server 使用SQL将CSV文件导出到FTP站点

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

有人知道如何将CSV文件导出到SQL management studio中的FTP站点吗? 我目前正在使用 exec xp_cmdshell“网络使用\\用户:fjdowj ddfdf” 但它根本不起作用
谢谢

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站点,我将不胜感激。