Database Abstraction Layer and 'LOAD DATA INFILE' Statements I realize that using the database abstraction layer comes with a few caveats such as not being able to run queries that are not available in one way or another across all versions of the databases supported by Drupal7. However, I need to load data from a CSV file into the database from a user uploaded CSV file via a form built with the form API. So in the hook_submit function, I am going to do just that. Obviously I can write my own MySQL dependent implementation, however, I was hoping there was an abstracted "Drupal way" to accomplish the same task. I have not been able to find any such method.

Typically here is how I would do this after sanitizing the data, as an example:

LOAD DATA INFILE 'components.csv' 
INTO TABLE components
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(componentId,componentName,componentDescription,componentAverageCost);


However, obviously this is a MySQL dependent query and even further it is dependent upon MySQL version 5 and later if my memory serves me correctly.
Your question is a little vague. I assume this isn't for a Content Type you created or an Entity in D7 ?!

As you pointed out this is DBMS specific. The drupal db api basically adheres to an ANSI SQL '97 (i think) specification. So you can do basic queries, updates, etc using the Drupal API. When you start talking about DBMS specific stuff you're outta luck.

The drupal API sits atop the PHP PDO library. This is an abstraction on top of many DBMSs as well -- you can do anything dbms specific with a bare PDO_Connection object ... called a stored procedure, or do your nifty INFILE usage above.

So you'd probably have to make your custom MYMODULE_form_submit() and do your custom query there from the raw pdo db connection. You can call Database::getConnection() in Drupal 7 to get the default db connection directly. Here is similar concept in calling a MySQL stored procedure from D7 asked here before on stackexchange.

Lastly, this isn't really drupal api related because you not seeking to call node_save() with your CSV data ... node_save() lives in the universe of the drupal API and has a succesion of function calls around it in the Drupal-verse, you're clearing asking for MySQL-verse stuff :)