SQL Server 在 SQL Server 与 firebase 之间复制数据

问题描述 投票:0回答:1

我已将图像保存在 SQL Server 上,如屏幕截图所示。我们的服务器太慢了。我们计划将图像存储在 firebase 上并在 sql server 中保存引用。有没有什么有效的方法可以做到这一点。我在 SQL Server 中将大约 1500 个图像保存为 varbinary。附上截图供参考。

谢谢

enter image description here

我正在尝试使用某种使用 C# 的 SQL Server 脚本,如下所示。

class Program
{
    static async Task Main(string[] args)
    {
        string firebaseStorageBucket = "your-firebase-storage-bucket"; // Replace with your Firebase Storage bucket name

        try
        {
            // Connect to SQL Server database
            string connectionString = "your-sql-server-connection-string";
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                await connection.OpenAsync();

                // Fetch file data from dbo.Media table
                string selectQuery = "SELECT Md_ID, Md_FileName, Md_FileType, Md_Extension, Md_Title, Md_Desc FROM dbo.Media";
                SqlCommand command = new SqlCommand(selectQuery, connection);
                SqlDataReader reader = await command.ExecuteReaderAsync();

                // Upload each file to Firebase Storage
                while (await reader.ReadAsync())
                {
                    string mdId = reader["Md_ID"].ToString();
                    string fileName = reader["Md_FileName"].ToString();
                    string fileType = reader["Md_FileType"].ToString();
                    string extension = reader["Md_Extension"].ToString();
                    string title = reader["Md_Title"].ToString();
                    string description = reader["Md_Desc"].ToString();

                    byte[] fileData = /* Retrieve file data from reader */;
                    await UploadFileToFirebase(mdId, fileData, fileName, fileType, extension, title, description, firebaseStorageBucket);
                }

                Console.WriteLine("All files uploaded to Firebase Storage successfully.");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }

    static async Task UploadFileToFirebase(string mdId, byte[] fileData, string fileName, string fileType, string extension, string title, string description, string firebaseStorageBucket)
    {
        try
        {
            // Initialize Firebase Storage
            var firebaseStorage = new FirebaseStorage(firebaseStorageBucket);

            // Upload file to Firebase Storage
            string storagePath = $"files/{mdId}/{fileName}.{extension}";
            var uploadTask = firebaseStorage.Child(storagePath).PutAsync(new MemoryStream(fileData));

            // Wait for upload to complete
            string downloadUrl = await uploadTask;

            Console.WriteLine($"File uploaded: {storagePath}, Download URL: {downloadUrl}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error uploading file: {ex.Message}");
        }
    }
}

但它显示成功,但没有在 firebase 上复制图像。

sql-server firebase-realtime-database
1个回答
-1
投票

尝试将图像从 SQL Server 导出到文件夹,这样您就可以直观地检查它们是否已正确提取为文件。

然后第二次将它们作为文件读取并将二进制序列推送到 firebase。

仅使用代码,您无法确定 SQL Server 会输出什么。

© www.soinside.com 2019 - 2024. All rights reserved.