Since you were considering using SQL here is another scripting option using R. This approach reads the data using rgdal, calculates a new column (in example log transform), and then overwrites original shapefile(s). The only things that you need to change are the working directory (setwd), calculating the new column and the name of the new column (in this example "NEW").
require(rgdal)
setwd("D:/data")
shps <- list.files(getwd(), pattern = "shp$")
for(i in shps) {
shp <- readOGR(getwd(), unlist(strsplit(i, "\\."))[1])
new.col <- shp@data$NEW=log(shp@data$VAR) # CAL NEW COLUMN HERE
shp@data <- data.frame(shp@data, NEW=new.col)
writeORG(shp, getwd(), unlist(strsplit(i, "\\."))[1],
driver="ESRI Shapefile")
}
Or, here is a more efficient R like way using apply and calculating a new column directly in the data.frame function.
require(rgdal)
setwd("D:/data")
lapply(as.list(list.files(getwd(), pattern = "shp$")), FUN=function(x) {
shp <- readOGR(getwd(), unlist(strsplit(x, "\\."))[1])
shp@data <- data.frame(shp@data, NEW=log(shp@data$VAR))
writeORG(shp, getwd(), unlist(strsplit(x, "\\."))[1],
driver="ESRI Shapefile") } )