gpt4 book ai didi

linux - 加载参数化的数据文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:22:00 25 4
gpt4 key购买 nike

我需要在 linux 环境下将平面文件中的数据加载到 mariaDB 中。我计划将 mariaDB 脚本放在 shell 文件中。然后从 cron 调用 shell。

mariadb脚本如下所示:

set @path = (select path_file from param);

set @tbl = (select table_name from param);

set @x = concat(
'LOAD DATA LOCAL INFILE ',
@path,
' INTO TABLE ', @tbl,
' (@row) set id = trim(substr(@row,1,2)), name = trim(substr(@row,3,19)), address= trim(substr(@row,22,20))'
);

prepare y from @x;

execute y;

deallocate prepare y;

当我直接在heidisql上执行脚本时,显示的错误:

this command is not supported in the prepared statement protocol yet

有没有人有更好的方法在不使用任何 ETL 工具的情况下定期(计划)将平面文件中的数据加载到 Linux 环境中的 MariaDB?

谢谢。

最佳答案

您可以尝试的一个选项是(根据需要调整):

文件:load_data.sh

path=$(mysql -u ${mysql_user} -p${mysql_password} -s -N <<GET_PATH
SELECT '/path/to/file/data.csv';
GET_PATH
)

tbl=$(mysql -u ${mysql_user} -p${mysql_password} -s -N <<GET_TABLE
SELECT 'table';
GET_TABLE
)

# mysql -u ${mysql_user} -p${mysql_password} -s -N <<LOAD_DATA
# LOAD DATA LOCAL INFILE '${path}'
# INTO TABLE \`${tbl}\` ...
# LOAD_DATA

# TEST
cat <<LOAD_DATA
LOAD DATA LOCAL INFILE '${path}'
INTO TABLE \`${tbl}\` ...
LOAD_DATA

命令行:

$ ls -l
-r-x------ load_data.sh

$ ./load_data.sh
LOAD DATA LOCAL INFILE '/path/to/file/data.csv'
INTO TABLE `table` ...

关于linux - 加载参数化的数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com