2

我在这里真的不合群,但我听说这是可以做到的。

我有一个 PBX 电话服务器,其中包含数千个不同 CSV 文件中的原始电话数据,这些文件每隔一段时间(在 8 分钟到 2 小时之间)被捕获,这些文件存储在过时的文件夹中。

我可以连接到服务器的唯一方法是通过 WinSCP,它只是给了我文件结构(看起来像 Filezilla FTP)。

所以有两件事:

  1. 有人会如何将数千个文件导入 SQL Server 数据库 (2008)?
  2. 有人会如何设置定时事件以在创建新的 CSV 文件时导入它们?

我只是需要一些方向。我什至不知道从哪里开始。

谢谢你的帮助。

4

3 回答 3

1
using System;
using System.Data;
using Microsoft.VisualBasic.FileIO;

namespace ReadDataFromCSVFile
  {
    static class Program
      {
        static void Main()
        {
            string csv_file_path=@"C:\Users\Administrator\Desktop\test.csv";
            DataTable csvData = GetDataTabletFromCSVFile(csv_file_path);
            Console.WriteLine("Rows count:" + csvData.Rows.Count);            
            Console.ReadLine();
        }
    private static DataTable GetDataTabletFromCSVFile(string csv_file_path)
        {
            DataTable csvData = new DataTable();
            try
            {
              using(TextFieldParser csvReader = new TextFieldParser(csv_file_path))
                 {
                    csvReader.SetDelimiters(new string[] { "," });
                    csvReader.HasFieldsEnclosedInQuotes = true;
                    string[] colFields = csvReader.ReadFields();
                    foreach (string column in colFields)
                    {
                        DataColumn datecolumn = new DataColumn(column);
                        datecolumn.AllowDBNull = true;
                        csvData.Columns.Add(datecolumn);
                    }
                    while (!csvReader.EndOfData)
                    {
                        string[] fieldData = csvReader.ReadFields();
                        //Making empty value as null
                        for (int i = 0; i < fieldData.Length; i++)
                        {
                            if (fieldData[i] == "")
                            {
                                fieldData[i] = null;
                            }
                        }
                        csvData.Rows.Add(fieldData);
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return csvData;
        }
      }
    }
于 2013-11-04T07:44:57.067 回答
1

如果您有权限,您可以BULK INSERT使用sqlcmd批处理文件。此外,您可以创建一个 SSIS 包。

更多信息在这里这里

于 2012-08-24T20:35:34.680 回答
1

1- 有很多方法可以将 csv 文件加载到 sql server 中,即 BCP、BulkLoad、OpenRowSet(Bulk provider)、SSIS、您的自定义 .Net 应用程序

最受欢迎的是批量插入。请参阅此博客以获取教程

http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-服务器/

2-定时事件?再次有很多选项,但最直接 -> 设置 Nighly SQL 作业

于 2012-08-24T20:38:33.957 回答