Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Грешка при импортиране на CSV файл:Стойност на колона, съдържаща разделител на колона

Едно предупреждение:не съм обикновен кодер на C#.

Но така или иначе този код прави следното:

Той отваря файл, наречен C:\Input.TXT

Търси всеки ред. Ако редът има повече от 5 запетаи, той изважда всички допълнителни запетаи от предпоследното поле (бележки)

Той записва резултата в C:\Output.TXT - това е този, който всъщност трябва да импортирате

Има много подобрения, които могат да бъдат направени:

  • Получаване на файлови пътища от мениджърите на връзки
  • Обработка на грешки
  • Един опитен C# програмист вероятно би могъл да направи това в hlaf кода

Имайте предвид, че вашият пакет ще се нуждае от достъп за запис в съответната папка

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. Актуализиране на пощенски профил на база данни в SQL Server (T-SQL)

  2. Изключване на дял в SQL Server (T-SQL)

  3. Как да добавите AM/PM към времева стойност в SQL Server (T-SQL)

  4. SQL Server заместете, премахнете всички след определен знак

  5. SQL Server:класиране на тип данни в аритметични операции?