我有一堆sql文件需要运行 如何批量运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我有一堆sql文件需要运行 如何批量运行相关的知识,希望对你有一定的参考价值。

navicat一次只能运行一个 如何将大量的sql导入mysql 一个一个导太慢了

可以使用批处理,调用 isql 执行 .sql文件。

1、 新建test.sql 文件。如图,代码执行删除 表a中id=\'1\'的记录。

2、新建批处理test.bat。如图:

3、运行批处理test.bat即可执行,test.sql中的SQL语句。

参考技术A 你可以将所有的sql文件存放到一个文件夹中,使用脚本循环读取每一个文件,你只要运行脚本就OK了,下面是导入数据代码。
mysql -u 用户名 -p 数据库名 < 存放位置
mysqljump -u root -p test < c:/a.sql本回答被提问者和网友采纳
参考技术B GO语句功能:作为一个批处理的结束
1、两个GO之间的SQL语句作为一个批处理。
2、在一个批处理中可以包含一条或多条Transact-SQL语句,成为一个语句组。
3、语句组从应用程序一次性地发送到SQL Server服务器进行执行。
4、SQL Server服务器将批处理编译成一个可执行单元,称为执行计划。
不是每个语句后到要用到GO ,但有些地方必须用,如:在create database 数据库名;和use 数据库名;之间,原因是必须先执行建立数据库命令,才能打开那个数据库。
参考技术C 把这些文件先合并成一个大文件,然后一次运行就可以了.

如何在 Linux 中检测文件访问?

【中文标题】如何在 Linux 中检测文件访问?【英文标题】:How can I detect file accesses in Linux? 【发布时间】:2009-05-18 23:24:27 【问题描述】:

我有一堆流和数据处理应用程序,我偶尔需要监视它们,这意味着我需要知道它们读取了哪些文件。这主要是为了帮助打包测试用例,但在调试时也很有用。

有没有办法以产生这样一个列表的方式运行可执行文件?

对此我有两个想法:

    我可以调用一个命令,该命令会调用我的应用程序。类似于 GDB 的东西。我调用 GDB,给它一个可执行文件的路径和一些参数,然后 GDB 为我调用它。也许有类似告诉我如何使用系统资源的东西。 也许是更有趣(但不必要的小路)的解决方案。
      创建名为 libc.so 的库,它实现了 fopen(和其他一些) 将 LD_LIBRARY_PATH 更改为指向新库 复制真正的 libc.so 并在编辑器中重命名 fopen(可能是 nepof) 我的库加载副本并根据需要调用重命名的函数以提供 fopen 功能。 调用应用程序,然后调用我的代理 fopen。

备选方案#1 肯定是更可取的方案,但也欢迎有关如何更轻松地完成#2 的 cmets。

【问题讨论】:

另见***.com/q/2972765/119790 【参考方案1】:

一种选择是使用 strace:

strace -o logfile -eopen yourapp

这将记录所有文件打开事件,但会造成可能很严重的性能损失。但是它的优点是易于使用。

另一个选择是使用 LD_PRELOAD。这对应于您的选项#2。基本思想是做这样的事情:

#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>

int open(const char *fn, int flags) 
    static int (*real_open)(const char *fn, int flags);

    if (!real_open) 
        real_open = dlsym(RTLD_NEXT, "open");
    

    fprintf(stderr, "opened file '%s'\n", fn);
    return real_open(fn, flags);

然后构建:

gcc -fPIC -shared -ldl -o preload-example.so preload-example.c

然后运行你的程序,例如:

$ LD_PRELOAD=$PWD/preload-example.so cat /dev/null
opened file '/dev/null'

这样的开销要少得多。

但是请注意,还有其他用于打开文件的入口点 - 例如,fopen()、openat() 或许多旧版兼容性入口点之一:

00000000000747d0 g    DF .text      000000000000071c  GLIBC_2.2.5 _IO_file_fopen
0000000000068850 g    DF .text      000000000000000a  GLIBC_2.2.5 fopen
000000000006fe60 g    DF .text      00000000000000e2  GLIBC_2.4   open_wmemstream
00000000001209c0  w   DF .text      00000000000000ec  GLIBC_2.2.5 posix_openpt
0000000000069e50 g    DF .text      00000000000003fb  GLIBC_2.2.5 _IO_proc_open
00000000000dcf70 g    DF .text      0000000000000021  GLIBC_2.7   __open64_2
0000000000068a10 g    DF .text      00000000000000f5  GLIBC_2.2.5 fopencookie
000000000006a250 g    DF .text      000000000000009b  GLIBC_2.2.5 popen
00000000000d7b10  w   DF .text      0000000000000080  GLIBC_2.2.5 __open64
0000000000068850 g    DF .text      000000000000000a  GLIBC_2.2.5 _IO_fopen
00000000000d7e70  w   DF .text      0000000000000020  GLIBC_2.7   __openat64_2
00000000000e1ef0 g    DF .text      000000000000005b  GLIBC_2.2.5 openlog
00000000000d7b10  w   DF .text      0000000000000080  GLIBC_2.2.5 open64
0000000000370c10 g    DO .bss       0000000000000008  GLIBC_PRIVATE _dl_open_hook
0000000000031680 g    DF .text      0000000000000240  GLIBC_2.2.5 catopen
000000000006a250 g    DF .text      000000000000009b  GLIBC_2.2.5 _IO_popen
0000000000071af0 g    DF .text      000000000000026a  GLIBC_2.2.5 freopen64
00000000000723a0 g    DF .text      0000000000000183  GLIBC_2.2.5 fmemopen
00000000000a44f0  w   DF .text      0000000000000088  GLIBC_2.4   fdopendir
00000000000d7e70 g    DF .text      0000000000000020  GLIBC_2.7   __openat_2
00000000000a3d00  w   DF .text      0000000000000095  GLIBC_2.2.5 opendir
00000000000dcf40 g    DF .text      0000000000000021  GLIBC_2.7   __open_2
00000000000d7b10  w   DF .text      0000000000000080  GLIBC_2.2.5 __open
0000000000074370 g    DF .text      00000000000000d7  GLIBC_2.2.5 _IO_file_open
0000000000070b40 g    DF .text      00000000000000d2  GLIBC_2.2.5 open_memstream
0000000000070450 g    DF .text      0000000000000272  GLIBC_2.2.5 freopen
00000000000318c0 g    DF .text      00000000000008c4  GLIBC_PRIVATE __open_catalog
00000000000d7b10  w   DF .text      0000000000000080  GLIBC_2.2.5 open
0000000000067e80 g    DF .text      0000000000000332  GLIBC_2.2.5 fdopen
000000000001e9b0 g    DF .text      00000000000003f5  GLIBC_2.2.5 iconv_open
00000000000daca0 g    DF .text      000000000000067b  GLIBC_2.2.5 fts_open
00000000000d7d60  w   DF .text      0000000000000109  GLIBC_2.4   openat
0000000000068850  w   DF .text      000000000000000a  GLIBC_2.2.5 fopen64
00000000000d7d60  w   DF .text      0000000000000109  GLIBC_2.4   openat64
00000000000d6490 g    DF .text      00000000000000b6  GLIBC_2.2.5 posix_spawn_file_actions_addopen
0000000000121b80 g    DF .text      000000000000008a  GLIBC_PRIVATE __libc_dlopen_mode
0000000000067e80 g    DF .text      0000000000000332  GLIBC_2.2.5 _IO_fdopen

为了完整起见,您可能需要钩住所有这些 - 至少,应该钩住不带 _ 前缀的那些。特别是,一定要单独挂钩 fopen,因为从 fopen() 到 open() 的 libc 内部调用不会被 LD_PRELOAD 库挂钩。

类似的警告适用于 strace - 还有“openat”系统调用,并且根据您的架构,可能还有其他遗留系统调用。但没有 LD_PRELOAD 钩子那么多,所以如果你不介意性能损失,它可能是一个更简单的选择。

【讨论】:

【参考方案2】:
man strace 

示例(假设 2343 是进程 ID):

# logging part
strace -p 2343 -ff -o strace_log.txt 

# displaying part
grep ^open strace_log.txt

【讨论】:

【参考方案3】:

我使用的是这样的:

strace -o file.txt ./command

然后就可以了

cat file.txt | grep open

获取程序打开的所有文件的列表。

【讨论】:

以上是关于我有一堆sql文件需要运行 如何批量运行的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 R2 - sqlcmd bat 文件在文件夹中运行一批 sql 查询,但它们没有按文件名的顺序运行

ANT - PLSQL执行错误

plsql执行sql语句,一行太长,如何分行,便于阅读

如何从命令行对 OpenOffice/LibreOffice 电子表格运行 sql 查询?

ANT - PLSQL 执行错误

我可以在一个语句中运行多个 SQL 部分吗?