Задача:
Создать через sql тестовую таблицу, которая весит 2-3 гигабайт. Через некоторое время проверить то, что данные не изменились.
Естественно, что все действия должны выполняться в командной строке.
Примечание:
Что значит нахрена? Стандартный смоук тест.
Скрипт не пригодился, нашёл самостятельно всё.
Для MySQL:
# CREATE DATABASE new_database;
# USE new_database;
CREATE TABLE rand_numbers (
number INT NOT NULL
) ENGINE = MYISAM;
DELIMITER $$
CREATE PROCEDURE InsertRand(IN NumRows INT, IN MinVal INT, IN MaxVal INT)
BEGIN
DECLARE i INT;
SET i = 1;
START TRANSACTION;
WHILE i <= NumRows DO
INSERT INTO rand_numbers VALUES (MinVal + CEIL(RAND() * (MaxVal - MinVal)));
SET i = i + 1;
END WHILE;
COMMIT;
END$$
DELIMITER ;
CALL InsertRand(500000000, 9999, 99999999);
Для Postgresql:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MIN_ID 0
#define MAX_ID 10000000
#define MAX_LEN 1024
#define CHARS "0123456789" \
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
"abcdefghijklmnopqrstuvwxyz"
int main()
{
char const * const chars = CHARS;
int const num_chars = strlen(chars);
printf("COPY test1 FROM STDIN;\n");
for(int i = MIN_ID; i <= MAX_ID; ++i)
{
printf("%d\t", i); // can be optimized if needed
int const len = rand() % MAX_LEN + 1;
for(int j = 0; j < len; ++j)
putchar(chars[rand() % num_chars]);
putchar('\n');
}
printf("\\.\n");
return 0;
}
and then run these commands:
gcc -std=c99 -Wall generate_test1_data.c -o generate_test1_data
./generate_test1_data > populate_test1.sql
psql -U ... -d ... -f populate_test1.sql
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.