Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhập tệp CSV Lỗi:Giá trị cột chứa dấu phân cách cột

Một lời cảnh báo:Tôi không phải là người viết mã C # thông thường.

Nhưng dù sao mã này thực hiện những điều sau:

Nó mở một tệp có tên C:\ Input.TXT

Nó tìm kiếm từng dòng. Nếu dòng có nhiều hơn 5 dấu phẩy, thì dòng đó sẽ lấy tất cả các dấu phẩy thừa ra khỏi trường cuối cùng thứ ba (ghi chú)

Nó ghi kết quả vào C:\ Output.TXT - đó là kết quả bạn cần thực sự nhập

Có nhiều cải tiến có thể được thực hiện:

  • Nhận đường dẫn tệp từ trình quản lý kết nối
  • Xử lý lỗi
  • Một lập trình viên C # có kinh nghiệm có thể làm điều này trong mã hlaf

Hãy nhớ rằng gói của bạn sẽ cần quyền ghi vào thư mục thích hợp

public void Main()
{
    // Search the file and remove extra commas from the third last field
    // Extended from code at
    // http://stackoverflow.com/questions/1915632/open-a-file-and-replace-strings-in-c-sharp
    // Nick McDermaid        

    string sInputLine;
    string sOutputLine;
    string sDelimiter = ",";
    String[] sData;
    int iIndex;

    // open the file for read
    using (System.IO.FileStream inputStream = File.OpenRead("C:\\Input.txt"))
    {
        using (StreamReader inputReader = new StreamReader(inputStream))
        {
            // open the output file
            using (StreamWriter outputWriter = File.AppendText("C:\\Output.txt"))
            {
                // Read each line
                while (null != (sInputLine = inputReader.ReadLine()))
                {
                    // Grab each field out
                    sData = sInputLine.Split(sDelimiter[0]);
                    if (sData.Length <= 6)
                    {
                        // 6 or less fields - just echo it out
                        sOutputLine = sInputLine;
                    }
                    else
                    {
                        // line has more than 6 pieces 
                        // We assume all of the extra commas are in the notes field                                

                        // Put the first three fields together
                        sOutputLine =
                            sData[0] + sDelimiter +
                            sData[1] + sDelimiter +
                            sData[2] + sDelimiter;

                        // Put the middle notes fields together, excluding the delimiter
                        for (iIndex=3; iIndex <= sData.Length - 3; iIndex++)
                        {
                            sOutputLine = sOutputLine + sData[iIndex] + " ";
                        }

                        // Tack on the last two fields
                        sOutputLine = sOutputLine +
                            sDelimiter + sData[sData.Length - 2] +
                            sDelimiter + sData[sData.Length - 1];


                    }

                    // We've evaulted the correct line now write it out
                    outputWriter.WriteLine(sOutputLine);
                }
            }
        }
    }


    Dts.TaskResult = (int)Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success;
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể kết nối với SQL Server bằng PHP

  2. Truy xuất varbinary (MAX) từ SQL Server thành byte [] trong C #

  3. Truy vấn Sql để chèn ngày giờ trong SQL Server

  4. Cách cài đặt SQL Server trên Ubuntu 18.04

  5. tối ưu hóa truy vấn hàng xóm gần nhất trên 70 triệu đám mây điểm không gian mật độ cực cao trên SQL Server 2008