2

私はここで本当に私のリーグから外れていますが、それができると聞いています.

私は PBX 電話サーバーを使用しており、数千の異なる CSV ファイルに未加工の電話データがあり、これらのファイルは頻繁に (8 分から 2 時間の間で) キャプチャされ、日付付きフォルダーに保存されています。

サーバーに接続できる唯一の方法は、ファイル構造 (Filezilla FTP のように見えます) を提供する WinSCP を使用することです。

だから2つのこと:

  1. 何千ものファイルを SQL Server データベース (2008) にインポートするにはどうすればよいでしょうか?
  2. 新しい CSV ファイルが作成されたときにそれをインポートするために、時限イベントを設定するにはどうすればよいでしょうか?

方向性が必要なだけです。どこから始めればよいかさえわかりません。

ご協力いただきありがとうございます。

4

3 に答える 3

1

1- csvファイルをSQLサーバーにロードする方法はたくさんあります。つまり、BCP、BulkLoad、OpenRowSet(バルクプロバイダー)、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-時限イベント?ここでも多くのオプションがありますが、最も簡単です->NighlySQLジョブのセットアップ

于 2012-08-24T20:38:33.957 に答える
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 に答える