The PDOSQLExecTask
executes SQL statements using PDO.
The combination of large SQL files and
delimitertype
set to normal
can trigger segmentation faults with large files.
Table C.49: Attributes
Name | Type | Description | Default | Required |
---|---|---|---|---|
url | String | PDO connection URL (DSN) | none | Yes |
userid | String | Username for connection (if it cannot be specified in URL) | none | No |
password | String | The password to use for the connection (if it cannot be specified in URL) | none | No |
src | File | A single source file of SQL statements to execute. | none | No |
onerror | String | The action to perform on error (continue, stop, or abort) | abort | No |
delimiter | String | The delimeter to separate SQL statements (e.g. "GO" in MSSQL) | ; | No |
delimitertype | String | The delimiter type ("normal", "row" or "none"). Normal means that any occurence of the delimiter terminate the SQL command whereas with row, only a line containing just the delimiter is recognized as the end of the command. None disables all delimiter detection. | none | No |
autocommit | Boolean | Whether to auto (implicitly) commit every single statement, disabling transactions. | false | No |
encoding | String | Encoding to use for read SQL files | none | No |
<pdosqlexec url="pgsql:host=localhost dbname=test"> <fileset dir="sqlfiles"> <include name="*.sql"/> </fileset> </pdosqlexec>
<pdosqlexec url="mysql:host=localhost;dbname=test" userid="username" password="password"> <transaction src="path/to/sqlfile.sql"/> <formatter type="plain" outfile="path/to/output.txt"/> </pdosqlexec>
Because of backwards compatiblity, the PDOSQLExecTask can also be called using
the 'pdo'
statement.
<pdo url="pgsql:host=localhost dbname=test"> <fileset dir="sqlfiles"> <include name="*.sql"/> </fileset> <!-- xml formatter --> <formatter type="xml" output="output.xml"/> <!-- custom formatter --> <formatter classname="path.to.CustomFormatterClass"> <param name="someClassAttrib" value="some-value"/> </formatter> <!-- No output file + usefile=false means it goes to phing log --> <formatter type="plain" usefile="false" /> </pdo>
transaction
Wrapper for a single transaction. Transactions allow several files or blocks of statements to be executed using the same PDO connection and commit operation in between.
Table C.50: Attributes
Name | Type | Description | Default | Required |
---|---|---|---|---|
tsrcfile | String | File with statements to be run as one transaction | n/a | No |
fileset
Files containing SQL statements.
filelist
Files containing SQL statements.
formatter
The results of any queries that are executed can be printed in different
formats. Output will always be sent to a file, unless you set the
usefile
attribute to false
. The
path to the output file can be specified by the
outfile
attribute; there is a default filename that
will be returned by the formatter if no output file is specified.
There are three predefined formatters - one prints the query results in XML format, the other emits plain text. Custom formatters that extend phing.tasks.pdo.PDOResultFormatter can be specified.
Table C.51: Attributes
Name | Type | Description | Default | Required |
---|---|---|---|---|
type | String | Use a predefined formatter (either xml
or plain ). | n/a | One of these attributes is required. |
classname | String | Name of a custom formatter class (must extend phing.tasks.ext.pdo.PDOResultFormatter). | n/a | |
usefile | Boolean | Boolean that determines whether output should be sent to a file. | true | No |
outfile | File | Path to file in which to store result. | Depends on formatter | No |
showheaders | Boolean | (only applies to plain formatter) Whether to show column headers. | false | No |
coldelim | String | (only applies to plain formatter) The column delimiter. | , | No |
rowdelim | String | (only applies to plain formatter) The row delimiter. | \n | No |
encoding | String | (only applies to XML formatter) The xml document encoding. | (PHP default) | No |
formatoutput | Boolean | (only applies to XML formatter) Whether to format XML output. | true | No |