【发布时间】:2018-06-18 16:24:15
【问题描述】:
我有一个案例:将数据从 access 数据库传输到 SQL。我遇到了如何在 SQL 中创建大量新主键的问题。
当我传输 previos 表时,我使用生成器随机值来生成随机字符串。新钥匙我削减到 5 位数。
但现在我有很多行 900 000 并且包含大约 200 个新键。
我无法使用添加序列,因为主键的长度为 5 个数字 (char(5))。
我想我可以使用 java 创建一个密钥并找到这个脚本,但我不明白它是如何工作的。
import java.security.SecureRandom;
import java.util.Locale;
import java.util.Objects;
import java.util.Random;
public class RandomString {
public String nextString() {
for (int idx = 0; idx < buf.length; ++idx)
buf[idx] = symbols[random.nextInt(symbols.length)];
return new String(buf);
}
public static final String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static final String lower = upper.toLowerCase(Locale.ROOT);
public static final String digits = "0123456789";
public static final String alphanum = upper + lower + digits;
private final Random random;
private final char[] symbols;
private final char[] buf;
public RandomString(int length, Random random, String symbols) {
if (length < 1) throw new IllegalArgumentException();
if (symbols.length() < 2) throw new IllegalArgumentException();
this.random = Objects.requireNonNull(random);
this.symbols = symbols.toCharArray();
this.buf = new char[length];
}
我的数据库没有任何序列可以使用 Add sequence 和 Use DB to get sequence,但是有一个生成键的功能。我怎样才能使用这个功能?还是不行?
这是丢失数据的统计数据。在这种情况下我可以创建一个循环来重新生成密钥吗?
【问题讨论】:
标签: sql primary-key pentaho kettle spoon