OQ7Q4PCX3EKNP5IGOCSCTZGWAKX6HQYSEHRI7BPGINJFAXSVUANQC MK5UPYCRKUKCIBWBKLCEW754G4JJWSU2R2JCYNECUG2IRFLQKVNAC OCRETPZZPDCUSOPYRH5MVRATJ37TRFGVSIMOI4IV755HFXXOVHEAC 65G4H2V6262GLHTPQQ5H4NIPDJB7HRPBRVNAD2EL26N75YUM5PWQC ZVYOPUNH7UJL3YALGNNXQW2B4H4ONI5Z6XWAUZUONFG7LR55W4SQC IFVRAERTCCDICNTYTG3TX2WASB6RXQQEJWWXQMQZJSQDQ3HLE5OQC 2GJMZ6YA6OPHNS5KFFFI6POQ2BJ33SSS3NIPXYBFTJSN4BZBVEVAC DatasetID string `json:"dataset_id" jsonschema:"required,Dataset ID (12 characters)"`CSVPath string `json:"csv_path" jsonschema:"required,Absolute path to CSV file"`LogFilePath string `json:"log_file_path" jsonschema:"required,Absolute path for progress log"`
DatasetID string `json:"dataset_id" jsonschema:"required,description=Dataset ID (12 characters)"`CSVPath string `json:"csv_path" jsonschema:"required,description=Absolute path to CSV file. Format: location_name,location_id,directory_path,date_range,sample_rate,file_count (header required). date_range becomes cluster name. Example: 'Site A',abc123,/path/files,20240101-20240107,48000,100"`LogFilePath string `json:"log_file_path" jsonschema:"required,description=Absolute path for progress log file (monitors import progress)"`
**CSV Format for bulk_file_import:**```csvlocation_name,location_id,directory_path,date_range,sample_rate,file_count"Test Location","testloc12345","/path/to/test/files","test-2024","48000","10"```**Required columns (in order):**1. `location_name` - Display name (string, can have spaces)2. `location_id` - 12-character ID (must exist in database)3. `directory_path` - Absolute path to WAV files4. `date_range` - Becomes cluster name (any string)5. `sample_rate` - Sample rate in Hz (integer)6. `file_count` - Expected count (integer, informational)**Verify results with SQL:**```sql-- Check clusters createdSELECT name FROM cluster WHERE location_id = 'testloc12345';-- Check files importedSELECT COUNT(*) FROM file WHERE cluster_id IN (SELECT id FROM cluster WHERE location_id = 'testloc12345');```
Description: "Batch import WAV files across multiple locations/clusters using a CSV file. Auto-creates clusters if needed, logs progress to file for monitoring, and returns summary statistics. Synchronous/fail-fast execution.",
Description: "Batch import WAV files across multiple locations/clusters using a CSV file. CSV must have columns (in order): location_name, location_id, directory_path, date_range, sample_rate, file_count. Auto-creates clusters using date_range as cluster name. Logs progress to file for monitoring. Synchronous/fail-fast execution.",
**CSV Format:**- **Header required:** First row must contain column names- **Columns (in order):**1. `location_name` - Human-readable location name (string, can have spaces)2. `location_id` - 12-character location ID from database (must exist)3. `directory_path` - Absolute path to folder containing WAV files4. `date_range` - Cluster name (e.g., "20240101-20240107" or any string)5. `sample_rate` - Sample rate in Hz (integer, e.g., 8000, 48000, 250000)6. `file_count` - Expected file count (integer, informational only)**Important:**- `date_range` becomes the cluster name in the database- If cluster already exists for location+date_range, it will be reused- All `location_id` values must exist in the database (use `execute_sql` to query)- Paths should be absolute (relative paths may fail)**Example CSV:**```csvlocation_name,location_id,directory_path,date_range,sample_rate,file_count"MOK RW 05","Ucfh8ng4DuEa","/media/david/Data/MOK RW 05","20240706-20240714","8000","432""MOK RW 06","rDmmSPsJvNtD","/media/david/Data/MOK RW 06","20240706-20240714","8000","432""mokas__01","EsDkvXosAp4C","/media/david/Data/mokas__01","20240520-20240528","8000","432"```**Tool Call Example:**```json{"name": "bulk_file_import","arguments": {"dataset_id": "abc123xyz789","csv_path": "/path/to/import.csv","log_file_path": "/path/to/progress.log"}}```