Knowledge Base
  • Introduction
  • Events and Actions
  • Action Panel
  • sending email
  • calling a SQL action from a client side js action
  • Accessing to translations form a server
  • Executing SQL statements from within an action
  • How to invoke a generic SQL statement defined through a SQL action
  • How to show a message dialog
  • checking for "undefined" values
  • How to add spaces to the right of a text
  • How to create a docx report and show it on the web browser Enterprise Edition only
  • How to get or set a value from the graphics control
  • How to invoke a generic SQL query defined through a business component
  • How to remove spaces to the left and right of a text
  • How to support multiple themes in a single application, accoding to a rule
  • How to set content to a Google Map linked to a grid or form
  • How to replace all occurences of a pattern from a text
  • Utility methods
  • Link auto login
  • Creation of a link for the first access of a new user without give the user a password and forcing
  • Forgot password
  • setting up default values from values coming from a filter panel
  • identifing the modified record after the alteration
  • enabling/disabling checkboxes in a grid
  • Filtering a Lookup
  • formatting a column
  • using checkboxes to select rows in grid
  • showing a summary row in grid
  • Disabling a toolbar button
  • Configuring grid exports
  • Adding filter conditions to a grid
  • Filtering the grid content from a tree
  • Filtering the tree content, starting from a filter panel linked to a grid
  • collapsing a panel
  • validating a lookup
  • accessing the authorizations set for a specific grid
  • How to design a web service
  • How to remotelly invoke an action or business component or perform a write operation through a Restf
  • how to feed a grid from a JS business component
  • converting a JS object to a JSON string
  • executing a query
  • passing parameters to a server side JS action
  • return value
  • scheduling and frequency
  • finding the right filter panel
  • checking out if a component has been defined
  • Deploying an application
  • Enquiring a table belonging to the Platform repository
  • Adding a where clause to a business component linked to grid
  • Integrating Mailchimp lists
  • Formatting a number as a currency value to use it inside an email template
  • sending email from a template
  • How to send an email
  • Error 'smtpHost' is empty
  • Linking two windows
  • How to open manually a window from another window
  • How to open manually a popup window
  • How to hide a panel in a window dinamically
  • How to manage folder panels
  • How to manage card panels
  • Predefined variables supported by Platform
  • Accessing the application parameters
  • Application Log
  • How to design a web service
  • How to import java classes in server
  • How to import java classes in server
  • How to dynamically set a value on a combo
  • 4WS.Platform
  • How to listen to events in a mobile HTML panel
  • Issues with HTTPS requests
  • How to manage row totals in grid
  • How to send to the UI a notification to execute code automatically
  • How to filter a chart by date interval
  • How to filter a grid by date interval
  • How to read a text or csv file and save data on the database
  • How to write text or csv files
  • Reading an xls file stored in the specified path
  • How to create a report with Jasper Report
  • How to customize the alert message content
  • Setting up a cluster
  • Uploading and downloading files
  • How to listen to user definition changes
  • How to auto-show a window from login
  • How to manage encrypted fields
  • How to change CSS settings for a grid row
  • Customizing a Tree Panel
  • How to execute complex queries on Google Datastore
  • Theme customization
  • Retrieve and send the log of a mobile app
  • Import Roles and Users
  • How to synchronize multiple Form panels in the same window
  • Anchor buttons
  • Properties of subpanels
  • Bulk import
  • How to display the data not found message in a grid
  • How to setup an LDAP based authentication
  • How to synchronize data from Datastore to BigQuery
  • How to synchronize data from Datastore to Google Spanner
  • How to synchronize data from Datastore to CloudSQL
  • Scrollable form list
  • How to setup SAML authentication
  • How to export data from BigQuery in streaming
  • Update Google Spreadsheet
  • How to setup OAuth2 authentication
Powered by GitBook
On this page
  • Writing a CSV file
  • Writing a text file
  • Optimizing writing a csv file, starting from a SQL query

Was this helpful?

How to write text or csv files

Platform provides 2 server-side javascript methods to write a text file, with data coming from a database: one can be applied for CSV formatted files and the other more generic, related to a text file.

In both cases, the most important thing is avoiding the reading of a long result set coming from the execution of a SQL query in a database: data must be read one line a time and processed as it is read.

In order to do it, a special method to read a long result set must be used: utils.executeQueryWithCallback

This method requires the definition of a javascript callback function, which will be automatically invoked by Platform for each record read from the result set: this callback must be used to save each line in the text file. It goes without saying that the text file must be opened before executing the SQL query and manually closed when the result set has been read completely.

To sum up, this must be the right sequence to follow:

  • opening the text file

  • executing the SQL query

  • for each callback invocation: save a line

  • the result set has been read completely: close the text file

In the following sections, two examples are reported: one for writing a CSV file, the other is more generic.

Writing a CSV file

// open the CSV file, in order to write into it
var fileId = utils.openCSVFile(
    "ab.csv",true,9, ",",true,
    ["userCodeId","password","rowVersion","dateExpirationPassword"],
    [null,null,null,null]
);

// declare a callback function, invoked by a SQL query, used to write a single line into the CSV file
var processRow = function(jsonRow) {
    utils.writeToCSVFile(fileId,jsonRow);
}

// execute the SQL query, whose result set will be read row by row, by invoking each time the specified callback
utils.executeQueryWithCallback(
    "processRow", // callback function, invoked for each record coming from the query, whose argument will receive a JSON object representing the record
    "SELECT U.USER_CODE_ID,U.DESCRIPTION,U.PASSWORD,U.DATE_EXPIRATION_PASSWORD,U.ROW_VERSION FROM PRM01_USERS U",
    null,
    false,
    true,
    []
);

// close the CSV file, after reading all records from the query
utils.closeCSVFile(fileId);

Writing a text file

// open the text file, in order to write into it
var fileId = utils.openTextFile(
    "abc.txt",true,9, true
);

// declare a callback function, invoked by a SQL query, used to write a single line into the text file
var processRow = function(jsonRow) {
    var row = jsonRow.userCodeId+","+jsonRow.description+"\r\n"; // or any other custom logic to use to produce a text content
    utils.writeToTextFile(fileId,row);
}

// execute the SQL query, whose result set will be read row by row, by invoking each time the specified callback
utils.executeQueryWithCallback(
    "processRow", // callback function, invoked for each record coming from the query, whose argument will receive a JSON object representing the record
    "SELECT U.USER_CODE_ID,U.DESCRIPTION,U.PASSWORD,U.DATE_EXPIRATION_PASSWORD,U.ROW_VERSION FROM PRM01_USERS U",
    null,
    false,
    true,
    []
);

Optimizing writing a csv file, starting from a SQL query

var fileName = "..."; // file name for the csv file to create will be saved
var overwrite = true; // overwrite a previous version of the csv file having the same name
var directoryId = ...; // directory id where saving the csv file
var languageId = ".."; // e.g. "IT"; used to format dates and numbers according to the language
var printTitles = true; // add a first row containing labels for each column, whose name is like the SELECT's fields
var fileAppend = false; // define whether the csv file must append lines to an already existing file
var formatColumns = null; // if specified, it must be a javascript Array containing formatters for the data read from the SQL query
// formatters depend on the data type: for a number can be "0.00" whereas for a date can be "yyyyMMdd"

var errorMsg = utils.createCSVFileFromSQLQuery(
   fileName, 
   overwrite, 
   directoryId, 
   ";", // fields separator: , or ;
   languageId, 
   printTitles, 
   fileAppend, 
   formatColumns,
   null, // datasource Id
   "SELECT FIELD1,FIELD2,... FROM ... WHERE...", // SQL query to execute
   [...] // parameters for the bind variables
);
PreviousHow to read a text or csv file and save data on the databaseNextReading an xls file stored in the specified path

Last updated 5 years ago

Was this helpful?

See for more details about the meaning of each argument.

See for more details about the meaning of each argument.

https://4wsplatform.gitbooks.io/api/content/File.html
https://4wsplatform.gitbooks.io/api/content/File.html