💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# C.64 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.75:聽Attributes NameTypeDescriptionDefaultRequired`url``String`PDO connection URL (DSN)noneYes`userid``String`Username for connection (if it cannot be specified in URL) noneNo`password``String`The password to use for the connection (if it cannot be specified in URL)noneNo`src`FileA single source file of SQL statements to execute.noneNo`onerror``String`The action to perform on error (continue, stop, or abort)abortNo`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.noneNo`autocommit``Boolean`Whether to auto (implicitly) commit every single statement, disabling transactions.`false`No`encoding``String`Encoding to use for read SQL filesnoneNo C.64.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> ``` ``` <property name="color" value="orange"/> <pdosqlexec url="mysql:host=localhost;dbname=test" userid="username" password="password"> <transaction> SELECT * FROM products WHERE color = '${color}'; </transaction> <formatter type="xml" outfile="path/to/output.xml"/> </pdosqlexec> ``` ### Note 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> ``` C.64.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.76:聽Attributes NameTypeDescriptionDefaultRequired`src``String`File with statements to be run as one transactionn/aNo - `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.77:聽Attributes NameTypeDescriptionDefaultRequired`type``String`Use a predefined formatter (either `xml` or `plain`). n/aOne 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`FilePath to file in which to store result.Depends on formatterNo`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.\\nNo`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