我被要求将700万个CSV文件批量加载到表格中。所以我写了这个用于类似请求的脚本
cd /datafiles
for f in $(find /datafiles -type f); do
echo $f
mysql -h <myhost> -u <myuser> --password=<myuserpassword <mydb> -e "LOAD DATA LOCAL INFILE '${f}' INTO TABLE <mytable> ignore 1 lines"
done
我使用此脚本最多可加载31个文件,即每月一个。仅此而已。
管道分隔的CSV(6个字段)基本上是点击数据。平均而言,每个文件的记录数大约为50条记录,但最高可达7000条,小到1条。
文件大小在50字节到800千字节之间。我的服务器分配了64 GB的内存。
由于DBA拒绝让我将所有文件连接成一个合并文件(与db缓存使用有关),我无法做出选择。
我会遇到内存问题吗?我的服务器在Google Cloud上。做这样的事情有什么可能的陷阱?
答案 0 :(得分:1)
完成后我会将文件移动到“完成”文件夹。 并在任何错误时停止。 类似的东西:
let handle: UnsafeMutablePointer<COpaquePointer> = getStringFromLibrary()
let myString = String(cString: libraryGetCString(handle))
freeStringFromLibrary(handle)