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.57: 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 delimiter to separate SQL statements (e.g. "GO" in MSSQL) | ; | No |
delimitertype | String | The delimiter type ("normal", "row" or "none"). Normal means that any occurrence 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 compatibility, 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.58: Attributes
Name | Type | Description | Default | Required |
---|---|---|---|---|
src | String | File with statements to be run as one transaction | n/a | No |
Files containing SQL statements.
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.59: 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 |