You can create a query object from a delimited text file by using the cfhttp tag and specifying method="Get" and the name attribute. This is a powerful method for processing and handling text files. After you create the query object, you can easily reference columns in the query and perform other ColdFusion operations on the data.
ColdFusion processes text files in the following manner:
- You can specify a field delimiter with the delimiter attribute. The default is a comma.
- If data in a field might include the delimiter character, you must surround the entire field with the text qualifier character, which you can specify with the textqualifier attribute. The default text qualifier is the double-quotation mark (").
- The textqualifier="" specifies that there is no text qualifier. If you use textqualifier="""" (four " marks in a row), it explicitly specifies the double-quotation mark as the text qualifier.
- If there is a text qualifier, you must surround all field values with the text qualifier character.
- To include the text qualifier character in a field, use a double character. For example, if the text qualifier is ", use "" to include a quotation mark in the field.
- The first row of text is always interpreted as column headings, so that row is skipped. You can override the file's column heading names by specifying a different set of names in the columns attribute. You must specify a name for each column. You then use these new names in your CFML code. However, ColdFusion never treats the first row of the file as data.
- When duplicate column heading names are encountered, ColdFusion adds an underscore character to the duplicate column name to make it unique. For example, if two CustomerID columns are found, the second is renamed "CustomerID_".
Create a query from a text file
- Create a text file with the following content:
OrderID,OrderNum,OrderDate,ShipDate,ShipName,ShipAddress
001,001,01/01/01,01/11/01,Mr. Shipper,123 Main Street
002,002,01/01/01,01/28/01,Shipper Skipper,128 Maine Street
- Save the file as text.txt in the myapps directory under your web_root.
- Create a ColdFusion page with the following content:
<cfhttp method="Get"
url="http://127.0.0.1/myapps/text.txt"
name="juneorders"
textqualifier="">
<cfoutput query="juneorders">
OrderID: #OrderID#<br>
Order Number: #OrderNum#<br>
Order Date: #OrderDate#<br>
</cfoutput>
<!--- Now substitute different column names --->
<!--- by using the columns attribute --->
<hr>
Now using replacement column names<br>
<cfhttp method="Get"
url="http://127.0.0.1/myapps/text.txt"
name="juneorders"
columns="ID,Number,ODate,SDate,Name,Address"
textqualifier="">
<cfoutput query="juneorders">
Order ID: #ID#<br>
Order Number: #Number#<br>
Order Date: #SDate#<br>
</cfoutput>
- Save the file as query_textfile.cfm in the myapps directory under your web_root and view it in the web browser.