如何将csv文件导入ms sql数据库?

时间:2012-08-24 20:24:12

标签: python sql sql-server-2008 csv

我真的离开了我的联盟,但我听说可以做到。

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

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

所以有两件事:

  1. 如何将数千个文件导入SQL Server数据库(2008)?
  2. 有人会如何设置定时事件来导入新CSV文件?
  3. 我只需要一些方向。我甚至不知道从哪里开始。

    感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

如果您拥有权限,则可以使用BULK INSERT使用批处理文件执行sqlcmd。此外,您还可以创建SSIS包。

更多信息herehere

答案 1 :(得分:1)

1-有很多方法可以将csv文件加载到sql server中,即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-server/

2-定时活动?再次许多选择,但最直接的 - >设置Nighly SQL作业

答案 2 :(得分: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;
        }
      }
    }