要加载700万个文件 - 任何陷阱?

时间:2018-04-12 21:47:27

标签: mysql

我被要求将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上。做这样的事情有什么可能的陷阱?

1 个答案:

答案 0 :(得分:1)

完成后我会将文件移动到“完成”文件夹。 并在任何错误时停止。 类似的东西:

let handle: UnsafeMutablePointer<COpaquePointer> = getStringFromLibrary()
let myString = String(cString: libraryGetCString(handle))
freeStringFromLibrary(handle)