У меня есть две проблемы здесь. Позвольте мне сначала описать цель программы. Я просто хочу заполнить строку company_id
моей таблицы 100000 идентификаторами строк в диапазоне от 00000-99999, перемешанными, без повторов. Мне удалось создать такой массив. Теперь я пытаюсь заполнить мой столбец первичного ключа этим массивом. Как видно из моего кода ниже, я пытаюсь сделать это с помощью цикла for. Я новичок в MySQL, поэтому я не уверен, что это эффективный способ вставить массив в столбец. Первая проблема заключается в том, что вводится только 1000 строк. Вторая проблема - сортировка строк по номеру (00000, 00001 и т. Д.). Мой код ниже. Есть идеи? Благодаря.
Обновление:
Я решил одну из проблем. Я был достаточно глуп, чтобы думать, что он покажет таблицу целиком. Я просто пошел на MySQLWorkbench > Preferences > SQL Execution > Limit Rows Count
. До сих пор не понимаю, почему он автоматически сортирует мою таблицу по первичному ключу.
package populateDB;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Random;
public class PopulateDB {
public static void main(String[] args) {
int[] nums = new int[100000];
String[] ids = new String[100000];
// Fill array with numbers 0-99999
for(int i = 0; i < ids.length; i++) {
nums[i] = i;
}
// Fill array to give length
Arrays.fill(ids, "fill");
shuffleArray(nums);
// Changes numbers such as 235 to 00235
for(int i = 0; i < ids.length; i++) {
ids[i] = createString(nums[i]);
}
try
{
// Create a MySQL database connection
String myDriver = "org.gjt.mm.mysql.Driver";
String myUrl = "jdbc:mysql://localhost:3306/humansight_schema";
Class.forName(myDriver);
Connection conn = DriverManager.getConnection(myUrl, "root", "password");
// The MySQL insert statement
String query = " insert into user_data (company_id)"
+ " values (?)";
for(int i = 0; i < ids.length; i++) {
// Create the MySQL insert PreparedStatement
PreparedStatement preparedStmt = conn.prepareStatement(query);
preparedStmt.setString (1, ids[i]);
// Execute the PreparedStatement
preparedStmt.execute();
}
conn.close();
System.out.println("Done");
}
catch (Exception e)
{
System.err.println("Got an exception!");
System.err.println(e.getMessage());
}
}
private static void shuffleArray(int[] array)
{
int index;
Random random = new Random();
for (int i = array.length - 1; i > 0; i--)
{
index = random.nextInt(i + 1);
if (index != i)
{
array[index] ^= array[i];
array[i] ^= array[index];
array[index] ^= array[i];
}
}
}
private static String createString(int num) {
String numString = Integer.toString(num);
int zeroesToAdd = 5 - numString.length();
String zeroes = "";
for(int i = 0; i < zeroesToAdd; i++) {
zeroes = zeroes.concat("0");
}
return zeroes.concat(numString);
}
}