如何编写 cratedb 迁移脚本?迁移脚本不起作用
How to write cratedb migration scripts ? Migration Scripts not working
我们有一个数据库,其中有一个名为 Students 的 table,包含列 id、name、age、school。
现在我想编写一个迁移脚本,将 3 列(假设我有数百万条记录)从 Students table 复制到 New_students table。
下面是我编写的示例脚本。它抛出一个错误
CREATE TABLE IF NOT EXISTS New_Students (
id PRIMARY KEY,
name string,
age string,
)
INSERT INTO New_Students(id,name,age)
SELECT id,name,age
FROM students;
在 crateDb Admin UI 中执行上面的操作时,出现以下错误
SQLActionException[SQLParseException: line 8:1: mismatched input 'INSERT' expecting <EOF>]
以上语句在单独执行时有效。
问题:
- 为什么上面的多个语句不起作用,但单独输入时却能起作用?
2.How 我们将数据从 table 列复制到另一个新的 table 。假设我有数百万条记录,我该如何更有效地做到这一点?
在创建 table 语句后加一个分号
CREATE TABLE IF NOT EXISTS New_Students (
id int PRIMARY KEY,
name varchar(100),
age varchar(100) -- you need to remove this line coma as well
);
INSERT INTO New_Students(id,name,age)
SELECT id,name,age
FROM students;
单个请求中只有 1 个语句,正如您所说,当您将查询分开时它会起作用,因此您确实需要执行两个语句。
即使有数百万条记录,它仍然是一条语句,所以效率应该无关紧要吧?你只是 运行 1 个单独的脚本来创建一个新的 table 插入将按预期工作,无论它可能需要多长时间。
为什么不直接从数据创建 table?
CREATE TABLE New_Students as
SELECT id, name, age
FROM students;
您的问题是接口一次只允许您发送 on 语句。不过,在这种情况下,您可能不需要两个语句。
CrateDB AdminUI 的 SQL 控制台不支持多语句。
您可以改用 crash
CLI 工具,它支持多语句,请参阅 https://crate.io/docs/clients/crash/en/latest/。
我们有一个数据库,其中有一个名为 Students 的 table,包含列 id、name、age、school。
现在我想编写一个迁移脚本,将 3 列(假设我有数百万条记录)从 Students table 复制到 New_students table。
下面是我编写的示例脚本。它抛出一个错误
CREATE TABLE IF NOT EXISTS New_Students (
id PRIMARY KEY,
name string,
age string,
)
INSERT INTO New_Students(id,name,age)
SELECT id,name,age
FROM students;
在 crateDb Admin UI 中执行上面的操作时,出现以下错误
SQLActionException[SQLParseException: line 8:1: mismatched input 'INSERT' expecting <EOF>]
以上语句在单独执行时有效。
问题:
- 为什么上面的多个语句不起作用,但单独输入时却能起作用? 2.How 我们将数据从 table 列复制到另一个新的 table 。假设我有数百万条记录,我该如何更有效地做到这一点?
在创建 table 语句后加一个分号
CREATE TABLE IF NOT EXISTS New_Students (
id int PRIMARY KEY,
name varchar(100),
age varchar(100) -- you need to remove this line coma as well
);
INSERT INTO New_Students(id,name,age)
SELECT id,name,age
FROM students;
单个请求中只有 1 个语句,正如您所说,当您将查询分开时它会起作用,因此您确实需要执行两个语句。
即使有数百万条记录,它仍然是一条语句,所以效率应该无关紧要吧?你只是 运行 1 个单独的脚本来创建一个新的 table 插入将按预期工作,无论它可能需要多长时间。
为什么不直接从数据创建 table?
CREATE TABLE New_Students as
SELECT id, name, age
FROM students;
您的问题是接口一次只允许您发送 on 语句。不过,在这种情况下,您可能不需要两个语句。
CrateDB AdminUI 的 SQL 控制台不支持多语句。
您可以改用 crash
CLI 工具,它支持多语句,请参阅 https://crate.io/docs/clients/crash/en/latest/。