csv

  • 04 Dec

    Export Chinese Text Data from SQL server database to CSV file

    Q: I want to export Chinese Text data from an SQL server database to a CSV file. Setting up the Limagito rule was simple: SQL input and an output directory. I am actually using an SQL Select because the data that I want to export results from a join. Unfortunately the exported file is in ANSI encoding. Since my SQL Server source has nvarchar fields, some of them with Chinese text in them, I cannot use the CSV. Is there any way to tell Limagito to output CSV from an SQL Server source as UTF-8?

    A: We had to add some new options in version v2020.12.4 to achieve this.

    We added a basic example to get you started:

    Added SQL as Source

    Limagito File Mover SQL as Source

    We’ll be using a simple QRY to get all the date from a database table:

    Limagito File Mover SQL as Source Select Statement

    We are using a MS SQL Database, connection Setup:

    Limagito File Mover SQL as Source database setup

    Some info about the Database table (Demo_10

    ) we’ll be using:

    Add the query, simple seclect all statement:

    Limagito File Mover SQL as Source Query

    Important, Add the encoding you need. In this example we added UTF-8.

    Limagito File Mover SQL as Source Common options

    Destination Setup, WIN as Destination:

    Limagito File Mover WIN as Destination

    Destination File Result:

    Limagito File Mover SQL to Csv File

    RunTime Log Result:

    Limagito File Mover SQL to Csv RunTime Log

    If you need any help with this ‘Export Chinese Text Data’ question, please let us know.

    Best Regards,

    Limagito Team

    By Limagito SQL , ,
  • 12 Jul

    Q&A 20: I’d love the option to go the other way, csv to xls

    Q: It seems XLS as destination is meant to convert Xls as source file. I’d love the option to go the other way, csv to xls. Oh well, feature request.
    A: You are correct the original idea was to convert XLS files but on your request we added this feature request in version v2020.7.12.0

    We added some screenhosts to give you  an idea about the setup. The Source is a Windows folder:

    LimagitoX File Mover Windows Source Folder

    We added a file filter to only include *.txt and *.cvs files:

    LimagitoX File Mover File Filter

    As Destination we added our ‘Add XLS’ option:

    LimagitoX File Mover XLS as destination

    The Csv file that we are going to convert has a comma as delimiter. Our goal is to convert the Csv source file to a Xls file. We enabled ‘Change Extension’ and added .xls as ‘Extension’. File Format was set to ‘Xls, Excel 97-2000-XP-2003’.

    LimagitoX File Mover Csv To Xls optionResult:

    Limagito File Mover Csv to Xls log result

    If you need any help , please let us know.
    Regards,
    Limagito Team
    By Limagito Q&A XLS ,
  • 17 Apr

    How-To use a csv file as filter and destination path in LimagitoX File Mover

    Another example of how Pascal Script can be used. In this how-to we’ll explain you how the content of a csv file can be used to filter the source file and at the same time this csv file will be used to set the destination path.

    In this example we use C:\Test\Demo as base folder. It contains 3 subfolders which will be used by the Moving Rule.

    1. C:\Test\Demo\Csv  :  contains the Csv file which we will scan for its content. The content will give us the file filter and destination path.
    2. C:\Test\Demo\In  :  folder will be used as source of the moving rule
    3. C:\Test\Demo\Out  :  folder will be used as destination path. We’ll receive this info from the csv file.

    In the Csv subfolder we created an excel file. First column contains the filename filter. We’ll search for files which contain this string in its filename. The second column is used for the destination path when this file is found.

    Next we did an export of this excel file to csv. We need this cvs file for our Pascal Script.

    Content of the Source Folder:

    Select this folder in the Source Setup (WIN).

    Setup of the File Filter. Important, select RegEx Include filter and add %VSB as filter.

    Open the Pascal Script Setup:

     

    Add the following ‘On Rule Begin’ Pascal Script. Don’t forget to adjust the ctCsvFile constant (depends on your setup).

    Var
      iList: Integer;
      tmpList: TStringList;
      tmpEntry: String;
      tmpName: String;
      tmpCount: Integer;
      tmpPos: Integer;
    Const
      ctCsvFile = 'C:\Test\Demo\Csv\List.csv';
      ctCsvSep = ';';
    Begin
      psExitCode:= 0;
      psVSA := '';
      psVSB := '';
      // ... add your code here
      Try
        tmpList := TStringList.Create;
        Try
          tmpList.LoadFromFile(ctCsvFile);
          If tmpList.Count > 0 Then
          Begin
            tmpCount := tmpList.Count - 1;
            For iList := 0 to tmpCount Do
            Begin
              tmpEntry := Trim(tmpList.Strings[iList]);
              tmpPos := Pos(ctCsvSep, tmpEntry);
              If tmpPos <> 0 Then
              Begin
                tmpName := Copy(tmpEntry, 1, tmpPos-1);
                If iList = tmpCount Then
                  psVSB := psVSB + '.*' + tmpName + '.*'
                Else
                  psVSB := psVSB + '.*' + tmpName + '.*|'
              End;
            End;
            psVSA := tmpList.CommaText;
            // Debug Info
            psLogWrite(1, '', 'psVSA: ' + psVSA);
            psLogWrite(1, '', 'psVSB: ' + psVSB);
            // Set psExitCode
            If (psVSA <> '') And (psVSB <> '') Then
              psExitCode := 1;
          End;
        Except
          psLogWrite(1, '', 'Load Script File Exception');
        End;
      Finally
        tmpList.Free;
      End;
    End.

    Add the following ‘On Destination’ Pascal Script.

    Var
      iList: Integer;
      tmpList: TStringList;
      tmpEntry: String;
      tmpName: String;
      tmpPath: String;
      tmpCount: Integer;
      tmpPos: Integer;
    Const
      ctCsvSep = ';';
    Begin
      psExitCode:= 0;
      psVSC := '';
      // ... add your code here
      Try
        tmpList := TStringList.Create;
        Try
          tmpList.CommaText := psVSA;
          If tmpList.Count > 0 Then
          Begin
            tmpCount := tmpList.Count - 1;
            For iList := 0 to tmpCount Do
            Begin
              tmpEntry := Trim(tmpList.Strings[iList]);
              tmpPos := Pos(ctCsvSep, tmpEntry);
              If tmpPos <> 0 Then
              Begin
                tmpName := Copy(tmpEntry, 1, tmpPos-1);
                If Pos(tmpName, psFileName) <> 0 Then
                begin
                  tmpPath := Copy(tmpEntry, tmpPos+1, length(tmpEntry)-tmpPos);
                  If tmpPath <> '' Then
                  Begin
                    psVSC := tmpPath;
                    Break;
                  End;
                End;
              End;
            End;
            // Debug Info
            psLogWrite(1, '', 'psVSC: ' + psVSC);
            // Set psExitCode
            If (psVSC <> '') Then
              psExitCode := 1
            Else
              psLogWrite(1, '', 'Could not find a path for: ' + psFileName);
          End;
        Except
          psLogWrite(1, '', 'Find Destination Path Exception');
        End;
      Finally
        tmpList.Free;
      End;
    End.

    Add a WIN Destination:

    Set ‘Select Directory’ to %VSC

    Enable and trigger the rule. The Source files will be filtered and moved to the destination as set in the csv file.

    Destinations created with information from the csv file:

    Destination content example:

    This is just an example of what can be done using Pascal Script. If you need any help using Pascal Script, please let us know.

    Regards,

    Limagito Team

1 2 3