copyFrom method
- String sql,
- Stream<
List< data, {int> > - dynamic substitutionValues,
- PlaceholderIdentifier placeholderIdentifier = PlaceholderIdentifier.atSign,
- int? timeoutInSeconds,
Executa um COPY ... FROM STDIN enviando data (no formato indicado
no próprio comando: texto, CSV ou binário) e devolve o número de linhas
copiadas.
sql é enviado como está (sem placeholders), exceto quando
substitutionValues é informado. Os blocos de data são enviados à
medida que chegam, com controle de fluxo; um bloco não pode ser
alterado depois de emitido. Se data emitir um erro, o COPY é
abortado no servidor (nada é gravado) e o erro é lançado; a conexão
continua utilizável. Erros do servidor (por exemplo, uma linha
inválida) interrompem o envio e são lançados como
PostgreSQLException.
O tempo limite (timeoutInSeconds, ou queryTimeoutInSeconds da
conexão) vale para o COPY inteiro; ao expirar, o COPY é abortado.
Para gravar valores Dart, veja copyRows.
Implementation
Future<int> copyFrom(String sql, Stream<List<int>> data,
{dynamic substitutionValues,
PlaceholderIdentifier placeholderIdentifier =
PlaceholderIdentifier.atSign,
int? timeoutInSeconds}) async {
final query = _copyQuery(sql, substitutionValues, placeholderIdentifier)
..copyInData = data;
final result = await _enqueue(query,
timeoutInSeconds: timeoutInSeconds ?? _connection.queryTimeoutInSeconds);
return result.affectedRowCount;
}