C.45 PDOSQLExecTask
Prev | Appendix C. Optional tasks | Next

## C.45 PDOSQLExecTask

The `PDOSQLExecTask` executes SQL statements using PDO.

### Note

The combination of large SQL files and `delimitertype` set to `normal` can trigger segmentation faults with large files.

Table C.53: 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

### C.45.1 Example

    <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>

### Note

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>

### C.45.2 Supported Nested Tags

- `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.54: Attributes

  Name | Type | Description | Default | Required
  --- | --- | --- | --- | ---
  `src` | `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.55: 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

Prev | Up | Next
C.44 PatchTask | Home | C.46 PearPackageTask